C#:
代码重构

如何进行重构:

让我们重构一个简单的C#方法,该方法计算并打印一个数字数组的总和:

重构前:

public class Calculator
{
    public void CalculateSum()
    {
        int[] numbers = { 1, 2, 3, 4, 5 };
        int sum = 0;
        for (int i = 0; i < numbers.Length; i++)
        {
            sum += numbers[i];
        }
        Console.WriteLine("The sum is " + sum);
    }
}

重构后:

public class Calculator
{
    private readonly int[] _numbers;

    public Calculator(int[] numbers)
    {
        _numbers = numbers;
    }

    public int CalculateSum()
    {
        return _numbers.Sum();
    }

    public void DisplaySum()
    {
        Console.WriteLine($"The sum is {CalculateSum()}");
    }
}

// 使用方式:
var calculator = new Calculator(new[] { 1, 2, 3, 4, 5 });
calculator.DisplaySum();

通过重构,我们区分了关注点,使Calculator类更加灵活,可以接受任何数字数组,并利用LINQ使求和计算更加简洁。

深入了解

重构源于smalltalk编程社区,并在1990年代由Martin Fowler的书籍《重构:改善既有代码的设计》(Refactoring: Improving the Design of Existing Code)中得到推广。多年来,它已成为敏捷方法论和良好编码实践的基本部分。

重构有各种方法,例如测试驱动开发(TDD)中的红-绿-重构。它通过从一个失败的测试开始,让测试通过,然后清理代码,确保重构不会引入错误。

实施重构时,拥有一套全面的测试套件至关重要,以确保在过程中不会破坏任何功能。自动化重构工具,如用于C#的ReSharper,也可以通过提供安全的代码结构更改方式来帮助这一过程。然而,工具应仅作为对代码库和编码原则深入理解的补充。

另请参阅