重构原则(P78-99)
为何重构
- 使代码更容易理解和修改
- 优化性能,便于维护
利用重构技术开发时,应该把时间分配给两种截然不同的行为,添加新功能,以及重构。
何时重构
三次法则:第一次只管去做。第二次会反感,但是可以这样做。第三次应该重构。
时机:
- 为了理解代码
- 为了弥补过去的不足,添加新特性
- 使用重构复审代码
重构是为了明天的工作更加轻松。
修改接口:修改已经发布的接口需要谨慎修改,尽量采用在旧接口中调用新接口的方式来实现。
重构的前提是代码的大部分功能都健全,并且不建议在最后关头做重构。
重构与设计
“预先设计”有必要,但是需要臆想到方方面面,难度大而且实施起来就不一定如意,因此可以使用重构来取代预先设计,只管按照最初的想法开始编码,让代码有效运作,然后再将它重构成型。这里并不是说预先设计就没有必要,最好还是有一个初步的设计,结合起来使用。
重构与性能
三种编写快速软件的方式:
- 时间预算法:分解设计时对每一个组件分配定量的资源——包括时间和执行的轨迹,每个组件绝对不能超过自己的预算时间,这种方法高度重视性能,运用在少部分系统中。
- 持续关注法:要求在任何时间做任何事都要保持系统的高性能,但是为了实现这种方法,开发的速度必然大大的降低,每一次都要思考最好的方式,性能改善分散在每一个角落,每一次修改都只是从程序的一个狭隘的角度出发。
- 大半的时间都消耗在一小部分的代码上,90%的优化工作都是白费劲。第三种方式就是先,编写良好的程序,不对性能做过多的关注,进入代码优化阶段时再对10%的“热点”部分做思考。
重构虽然可能使程序运行的教慢,但是它能使得我们比较快的开发出容易理解,容易添加新功能,细粒度更小的良好代码,在性能优化阶段可以针对“热点”进行优化,使得性能调整更容易: