代码重构 code refactoring

代码重构 code refactoring

通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。

目标

  1. (易懂)改进软件设计使软件更容易被理解 (易懂)

  2. (易查)帮你找到bug

  3. (效率)提高软件的开发速度

时机

  1. (new feature)在添加新功能时进行重构。

  2. (fix code 修代码时)在修改bug时进行重构。

  3. (Recheck复审) 在代码复审时进行重构。

  4. (交付期不重构) 到了最后的交付期限,不进行重构

重构与设计

重构与设计是互补的,程序应该是先设计,而在开始编码后,设计上的不足可以用重构来弥补.设计应该是适度的设计,而不必过度的设计.如果能很容易的通过重构来适应需求的变化,那么就不必过度的设计,当需求改变时再重构代码.

提高性能

  1. 时间预算法

  2. 持续关注法 (避免无效关注)

  3. 良好的分解方式: 开发阶段不对性能投以任何关注,直到进入性能优化阶段,再分析程序中性能差的程序,然后对这些程序进分解,查出性能差的程序,进行优化。

重构的原因

  1. 类臃肿(SRP单一职责原则)

  2. 长方法

    1. 大量的传参

    2. 常量值无处不在

    3. 模糊的方法名

重构方法

下面是非常不完整的代码重构清单。长一点的清单可以在福勒的重构书找到。因为研究者们继续努力不懈的发明以及实现重构,完整清单可能永远都不存在。

  • 封装成员变量(Encapsulate Field)—将仅限于本类使用的变量重写成私有(private)成员变量,并提供访问方法(accessor method)。这种重构方式可以将与外部调用者无关的变量隐藏起来,减少代码的耦合性,并减少意外出错的概率。

  • 提取方法(Extract Method)—意思是将大段代码中的一部分提取后,构成一个新方法。这种重构可以使整段程序的结构变得更清晰,从而增加可读性。这也对函数(Function)通用。

  • 一般化类型(Generalize Type)—将多个类/函数共用的类型抽象出可以公用的基类(base class),然后利用多态性追加每个类/函数需要的特殊函数。这种重构可以让结构更加清晰,同时可以增加代码的可维护性。

  • 函数归父(Pull Up)—或译函数上移,指的是方法从子类移动到父类。

  • 函数归子(Push Down)—或译函数下移,指的是方法从父类移动到子类。

  • 方法更名(Rename Method)—将方法名称以更好的表达它的用途。

https://zh.wikipedia.org/wiki/代码重构

Last updated

Was this helpful?