Chapter 1. 重构,第一个示例
如果你要给程序添加一个新特性,但发现代码因缺乏良好的结构而不易于进行更改,那就先重构那个程序,使其比较容易添加该特性,然后再添加该特性。
需求的变化使重构变得必要。如果一段代码能正常工作,并且不会再被修改,那么完全可以不去重构它。如果有人需要理解其工作原理,并且觉得理解起来很费劲,那就需要改进代码。
重构前,先检查自己是否有一套可靠的测试集。这些测试必须有自我检测能力。
无论每次重构多么简单,养成重构后即运行测试的习惯非常重要。
重构技术就是以微小的步伐修改程序。如果犯了错误,很容易便可发现。
如果测试通过,把代码提交到本地的版本控制。把代码提交到远程仓库前,把零碎的修改压缩成更有意义的提交。
使用动态类型语言时,跟踪变量的类型很有意义。为参数取名时可默认代上其类型名,可使用不定冠词修饰。
傻瓜都能写出计算机可以理解的代码。唯有能写出人类容易理解的代码的,才是优秀的程序员。
好的代码应该能清楚表明它在做什么,而变量名是代码清晰的关键。只要改名能够提升代码的可读性,那就应该毫不犹豫去做。
临时变量往往带来麻烦,它们只在对其进行处理的代码块中有用。
如果重构引入了性能损耗,先完成重构,再做性能优化。
营地原则:离开时的代码库一定比来时更健康。
好代码的检验标准是人们能否轻而易举地修改它。
Chapter 2. 重构的原则
重构:对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。