何谓重构
- 名词定义:对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可靠性,降低其修改成本。
- 动词定义:使用一系列软件重构手法,在不改变软件可观察行为的前提下,调整其结构
- 扩展定义:首先,重构的目的是使软件更容易被理解和修改。与之形成对比的性能优化,与重构一样性能优化通常不会改变组件的行为。但是两者出发点不同,性能优化往往使代码较难理解,但为了性能所需不得不这么做。其次,重构不会改变软件可观察的行为——重构之后软件功能一如既往
为何重构
重构是个工具,它可以用于以下几个目的:
- 重构改进软件设计
- 重构使软件更容易理解
- 重构帮助找到 bug
- 重构提高编程速度
何时重构
常常有人问怎样安排重构时间表。我们是不是每两个月就专门安排两个星期重构?
几乎任何情况下都反对专门抽出时间进行重构。你不应该为了重构而重构。
你应该遵循三次法则,第一次做某件事时只管去做;第二次做类似的时候产生反感,但无论如何还是可以去做;第三次再做类似的事情,你就应该重构。
事不过三,三则重构
以下是重构的时机:
添加功能时重构,要掌握两顶帽子原则,分别是添加新功能和重构。首先你会尝试添加新功能,然后意识到改变下程序结构,功能的添加会容易很多。于是你换了一顶帽子,做一会重构工作。结构调整后,你又换上另一顶帽子,继续添加新功能
修补错误时重构,重构代码,往往能帮助找到 bug
code review时重构,code review时,往往会提出重构代码的建议。