重构
一、什么是重构?
重构,在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构,提高其可理解性,降低其修改成本。
二、重构的目的?
- 重构可以改进软件设计:整理代码,让所有东西都回到应处的位置上,例如:消除重复代码,会让后期的修改减少很多麻烦。
- 重构可以使软件更容易理解:设计合理的代码结构;让应该被理解的东西写进代码里(注释);重构技术可以更好的理解代码,并在重构过程中验证自己的理解;重构可以使得代码更简洁,使得更容易观察到其他层面的东西。
- 重构可以帮忙找到bug:因为重构会加深理解,更易发现bug。
- 重构可以提高编程速度:良好的设计是维护软件开发速度的根本。
三、什么情况下需要重构?
- 相似的事情做了三次及以上,此处需要重构;
- 添加新功能的时候,发现比较复杂,进行重构;
- 修补错误的时候,因为代码不够清晰而产生的bug,进行重构;
- 复审代码的时候,多人思考,寻找最佳设计,有必要的时候可以进行重构;
四、重构的原则
- 让代码更容易理解;
- 所有的逻辑都只在唯一的地点指定;
- 新的改动不会危及现有的逻辑;
- 尽可能简单的表达现有逻辑;
五、重构的方法
- 可靠的测试,必须保证原有功能不被破坏;
- 分解与重组,把大块代码分割,并把较小块代码移至合适类,每修改一处,就对该修改点进行测试;
- 合适的变量名,名字很重要,可以有助于快速理解代码;
- 函数应该放在合适的地方;
- 减少临时变量的使用,临时变量传来传去容易出错;
六、重构难题
- 数据库:将数据库结构和对象模型之间的依赖降到最低;
- 修改接口的时候要注意,因为接口可能已经被其他人调用,如果发生改变,比较麻烦,所以可以在旧接口里调用新接口,让用户尽量无感知;尽量减少对外公开接口的数量。
- 如果发现代码太过混乱,重构可能还不如重写来的快;
- 晚重构不如早重构,尽可能早的发现问题并修改。
七、重构与性能
如果因为性能问题需要重构代码时,一定要先用性能测试工具找出导致性能缓慢的原因,然后再针对性的进行修改。