动机
1. 使新代码的增加更容易
2. 改善既有代码的设计
3. 更透彻地理解现有代码
重构的代价:C(X)=V*e^(X-X0)
注:C(X)为重构代价。V为重构的代码量。X为当前工程进度(0<X<1)。X0为一个基准自定义(0<X0<1),暂定为0.4。
意味着当工程进度X超过了X0,重构都会付出比预计更大的代价。
工程早期应该随时重构。
重构需要经验。
重构之前,代码必须能够在大部分情况下正常运作。否则,重构不如重写代码。
折中办法:将大的软件重构为封装良好的小型组件,然后逐一对组件做重构或重建。
重构基于可靠的测试环境。测试保证了重构的安全性。
测试驱动开发与持续重构能够导向优秀的设计。
重构的要点:
目的:低耦合,高内聚。
消除隐患:如移除对参数的赋值。分解临时变量。
提炼:提炼的对象可以是代码块、函数、类,更高层抽象等等。去除重复,简化复杂逻辑,提高复用率。
合并:将不适合分开来的,或者意图不清的相关代码,先合并起来。然后再采取其他方法重构。
置换:将长代码置换成短函数/变量。
释义:为长代码赋予变量,通过名称解释意图。