何谓重构
1.概念:作为名词时 → 对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。
作为动词时 → 使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。
2.两顶帽子:用重构技术开发软件时的“两顶帽子”,即添加新功能以及重构。添加新功能,就不应该修改既有代码,正在重构时,就不应该添加新功能,这两顶帽子可能经常变换,但要每次操作时搞清楚自己现在戴的是哪一顶。
为何重构
1.重构可以改进软件设计
2.重构使软件更容易理解
3.重构帮助找到bug,写出强健的代码
4.重构提高编程速度
何时重构
1.三次法则:事不过三,三则重构。也就是说第一次做某事只管去做,第二次做类似的事会有些反感,但无论如何还是可以去做,第三次再做类似的事时,就应该重构。
2.添加功能时重构:重构一是为了能帮我理解要修改的代码;二是当代码的设计,无法帮助我轻松添加我需要的特性,但我发现如果重构后这是最快途径,一旦完成重构,新特性的添加会更快更流畅,那么也会选择重构。
3.修补错误时重构
4.复审代码时重构
重构的必要性
目前有四个原因让人觉得代码难以相与:
1.难以阅读的程序,难以修改。
2.逻辑重复的程序,难以修改。
3.添加新行为时,需要修改已有代码的程序,难以修改。
4.带复杂条件逻辑的程序,难以修改。
我们希望的程序:
1.容易阅读
2.所有逻辑都只在唯一地点指定
3.新的改动不会影响现有行为
4.尽可能简单地表达条件逻辑
而重构,就是一条摆脱困境的道路,它能在不改变行为的前提下使其具备上述美好性质,使我们能够继续保持高速开发,从而增加程序的价值。
重构相关
一、修改接口
1.在重构接口时,千万不要复制接口实现,这会让你陷入重复代码的泥沼之中。
2.当重构好之后,调用新接口时,留下旧接口,但不要发布接口
二、重构与设计
1.预先设计,尽量避免以后重构
2.先找到一个稍稍合理地方案,就直接开干,干完后或者中途觉得有问题时,就进行重构(这也是我经常用的)