目录
一 重构定义
视上下文的不同,“重构”这个词有两种不同的定义:
1.1 重构当做名词
对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可用性,降低其修改成本。
1.2 重构当做动词
使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。
二 为何重构
重构是一个工具,它可以用于以下几个目的:
2.1 重构能改进软件设计
重构就像是整理代码,所做的就是让所有东西回到应处的位置上。代码结构的流失是积累性的,越难看出代码的设计意图,
就越难保护其中设计,于是该设计就腐败的越快。经常性的重构可以帮助代码维持自己该有的形态。改进设计的一个重要
方向是消除重复代码。
2.2 重构使软件更容易理解
重构可以帮助我们让代码更容易被阅读,一开始进行重构时,你的代码可以正常运行,但结构不够理想,在重构上花一点
点时间,就可以让代码更好表达自己的用途,这种编程模式的核心就是“准确说出我所要的”。重构可以协助理解不熟悉的
代码,因为当你想对一些代码进行修改时,必须首先理解这个代码的用途。
2.3 重构帮助找到 bug
2.4 重构提高编程速度
良好的设计是快速开发的根本,事实上,拥有良好设计才可能做到快速开发。如果没有良好的设计,或许某一段时间内你
的进展迅速,但恶劣的设计很快就让你的速度慢下来。你会把时间花在调试上面,无法添加新功能。修改时间越来越长,
因为你必须花越来越多的时间去理解系统、寻找重复代码。良好设计是维持软件开发速度的根本,重构可以帮助你更快速
的开发软件,因为它阻止系统腐败变质,它甚至可以提高设计质量。
三 何时重构
重构本来就不应该是专门花特定时间做的事情,重构应该随时随地进行,不应该为了重构而重构,之所以重构,是因为你
想做别的事情,而重构可以帮助你把事情做好。
3.1 三次法则
第一次做某件事时只管去做;第二次做类似的事会产生反感,但无论如何还是可以去做;第三次做类似的事情,就该重构。
事不过三,三则重构 。
3.2 添加功能时重构
重构的目的是更好的理解功能,可以更好、更快地添加新功能。
3.3 修补错误时重构
如果收到一份错误报告,这就是需要重构的信号,因为显然代码还不够清晰--没有清晰到让你一眼看出bug。
3.4 复审代码时重构
复审可以得到很多好的建议,获取更高层次的认识,如果不进行重构,很难得到这样的知识。