检查要进入重构阶段的团队有没有写好对应的单元测试,这些测试是否自动测试。
是否为重构的项目新开版本管理库,如果是,那这不是重构,而是 重写。
最终确认最开始要求添加的需求是否被完成。
最后这点看起来有点二,但实际中常常发生,团队说,我开始重构啦,于是在大汗淋漓的两周后,团队只能保证“重构”后的项目勉强运行,项目进入了新阶段——bug修复,然后就再也没人提最初提出的新功能新需求了。
对于第一点,我们要理解重构的目标是
不改变代码外在行为的前提下,对代码进行修改,以改进程序的内部结构。
如何保证代码外在行为没有改变?就得靠单元测试了,这里将单元测试作为代码或重构的质量标准,谁也不想一个正在运行的程序,被修改后引入一堆Bug。
既然重构讲究的是小步修改,每次改完后都要通过单元测试,那么第二点也很好理解了,重建版本库则意味着大段地搬移代码,这个过程很难保证代码质量,得到的很可能是 未经验证 的代码。
既然重构是一种编程手法,那么实践中的重构是如何操作的?该如何避免重写而*优雅地重构*呢?
原文转自:http://www.jianshu.com/p/bce0fe294655