代码重构 code refactoring
代码重构 code refactoring
通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。
目标
(易懂)改进软件设计使软件更容易被理解 (易懂)
(易查)帮你找到bug
(效率)提高软件的开发速度
时机
(new feature)在添加新功能时进行重构。
(fix code 修代码时)在修改bug时进行重构。
(Recheck复审) 在代码复审时进行重构。
(交付期不重构) 到了最后的交付期限,不进行重构
重构与设计
重构与设计是互补的,程序应该是先设计,而在开始编码后,设计上的不足可以用重构来弥补.设计应该是适度的设计,而不必过度的设计.如果能很容易的通过重构来适应需求的变化,那么就不必过度的设计,当需求改变时再重构代码.
提高性能
时间预算法
持续关注法 (避免无效关注)
良好的分解方式: 开发阶段不对性能投以任何关注,直到进入性能优化阶段,再分析程序中性能差的程序,然后对这些程序进分解,查出性能差的程序,进行优化。
重构的原因
类臃肿(SRP单一职责原则)
长方法
大量的传参
常量值无处不在
模糊的方法名
重构方法
下面是非常不完整的代码重构清单。长一点的清单可以在福勒的重构书找到。因为研究者们继续努力不懈的发明以及实现重构,完整清单可能永远都不存在。
封装成员变量(Encapsulate Field)—将仅限于本类使用的变量重写成私有(private)成员变量,并提供访问方法(accessor method)。这种重构方式可以将与外部调用者无关的变量隐藏起来,减少代码的耦合性,并减少意外出错的概率。
提取方法(Extract Method)—意思是将大段代码中的一部分提取后,构成一个新方法。这种重构可以使整段程序的结构变得更清晰,从而增加可读性。这也对函数(Function)通用。
一般化类型(Generalize Type)—将多个类/函数共用的类型抽象出可以公用的基类(base class),然后利用多态性追加每个类/函数需要的特殊函数。这种重构可以让结构更加清晰,同时可以增加代码的可维护性。
函数归父(Pull Up)—或译函数上移,指的是方法从子类移动到父类。
函数归子(Push Down)—或译函数下移,指的是方法从父类移动到子类。
方法更名(Rename Method)—将方法名称以更好的表达它的用途。
Last updated
Was this helpful?