重构的基本原则之一:不改变软件的可观察行为。设计
这一基本原则阐述的是咱们在作重构的时候,维持外部的功能外观不变,让用户没法感知重构的变化。其实这很好理解,重构与添加新功能二者的角色仿佛老是对立的。添加新的功能与重构所作的事情应该偏偏相反:不该该修改既有的代码,只是添加功能而已。开发
咱们老是在不知不觉中切换二者的角色,业务需求老是要咱们添加新的功能,可是咱们在开发过程当中会发现,若是重构一下代码,能够更优雅的添加咱们的功能。因此你会发现二者其实并不是绝对对立:重构为了更好的增新,增新则会带来新的重构。重构
这与中国道家的阴阳理论不谋而合,“奇正相生,如循环之无故,孰能穷之。”没有一劳永逸的重构,在代码的编写上,重构与增新老是循环往复,交织在一块儿。分清你如今的角色就显得很重要了,重构的时候必定要牢记本身的原则与初衷,这样才不会在重构上偏的太远。软件
重构的时间原则:理论上,当你感受到代码让你写起来以为恶心的时候,意味着重构的时机已到。没有什么特定的时间去重构,想到了就去作,随时随地,不用为重构留出特地准备的时间,你会发现你定好的时间老是或早或晚,早了没有必要,晚了则承受了太多痛苦。可是在项目的开发中,咱们总要遵循必定的规范,那么我建议是下面三个时机是最好的。循环
1.添加功能的时候。最重要的时机,你总会在新增功能的时候发现设计上不合理的时候,这是你能够体会你设计上优缺点最敏感的时候,不要错过这个时机。项目
2.修复BUG的时候。错误每每是因为你的设计不合理而产生的,设计上的不合理会让你产生对代码的误解,从而在修改代码的时候引入新的错误。若是你的项目中老是有一些没法一眼看到的BUG隐藏在角落里,那么这个时候你就须要考虑去重构你的代码。时间
3.审核代码的时候。审核代码通常都是不少人在一块儿或者是一个老手在审核你的代码,人们每每老是针对一个熟识的东西会无心识的过滤其优缺点。代码也是,咱们须要别人给咱们提供建议,他们的建议是站在别人的角度,这对于咱们是尤其重要,代码是要给人读的,能写出给机器读的代码很容易,写出给人读的代码才是高手。错误