MST

星途 面试题库

面试题:C# 中如何通过代码重构提升方法的可维护性

假设你有一段C#代码,其中有一个方法包含大量重复代码,逻辑复杂且嵌套了多层if - else语句,简述你会采取哪些重构手段来提升该方法的可维护性,并举例说明如何将重复代码提取出来。
50.1万 热度难度
编程语言C#

知识考点

AI 面试

面试题答案

一键面试

重构手段

  1. 提取方法:将重复的代码块提取到单独的方法中,这样可以减少原方法中的代码冗余,提高代码的可读性和可维护性。同时,也方便在其他地方复用这些代码。
  2. 使用多态替代if - else:对于复杂的条件判断逻辑,可以通过多态来处理。创建不同的类继承自同一个基类或实现同一个接口,然后根据具体情况创建不同的子类实例来处理不同的逻辑,避免大量的if - else嵌套。
  3. 提前返回:对于一些前置条件判断,可以尽早返回,避免不必要的嵌套。

示例:提取重复代码

假设原代码如下:

public void ProcessData(int data)
{
    if (data > 10)
    {
        Console.WriteLine("Data is greater than 10");
        // 重复代码块1
        var result = data * 2;
        Console.WriteLine($"Calculated result: {result}");
    }
    else
    {
        Console.WriteLine("Data is less than or equal to 10");
        // 重复代码块1
        var result = data * 2;
        Console.WriteLine($"Calculated result: {result}");
    }
}

重构后:

public void ProcessData(int data)
{
    if (data > 10)
    {
        Console.WriteLine("Data is greater than 10");
    }
    else
    {
        Console.WriteLine("Data is less than or equal to 10");
    }
    CalculateAndPrint(data);
}

private void CalculateAndPrint(int data)
{
    var result = data * 2;
    Console.WriteLine($"Calculated result: {result}");
}

在上述示例中,将重复的计算和打印代码提取到CalculateAndPrint方法中,使ProcessData方法逻辑更加清晰,减少了重复代码。