他们总在说重构,不过是重写(2)

发表于:2016-10-25来源:jianshu作者:溪石点击数: 标签:重构
检查要进入重构阶段的团队有没有写好对应的 单元测试 ,这些测试是否自动测试。 是否为重构的项目新开版本管理库,如果是,那这不是重构,而是 重

  检查要进入重构阶段的团队有没有写好对应的单元测试,这些测试是否自动测试。

  是否为重构的项目新开版本管理库,如果是,那这不是重构,而是 重写。

  最终确认最开始要求添加的需求是否被完成。

  最后这点看起来有点二,但实际中常常发生,团队说,我开始重构啦,于是在大汗淋漓的两周后,团队只能保证“重构”后的项目勉强运行,项目进入了新阶段——bug修复,然后就再也没人提最初提出的新功能新需求了。

  对于第一点,我们要理解重构的目标是

  不改变代码外在行为的前提下,对代码进行修改,以改进程序的内部结构。

  如何保证代码外在行为没有改变?就得靠单元测试了,这里将单元测试作为代码或重构的质量标准,谁也不想一个正在运行的程序,被修改后引入一堆Bug。

  既然重构讲究的是小步修改,每次改完后都要通过单元测试,那么第二点也很好理解了,重建版本库则意味着大段地搬移代码,这个过程很难保证代码质量,得到的很可能是 未经验证 的代码。

  既然重构是一种编程手法,那么实践中的重构是如何操作的?该如何避免重写而*优雅地重构*呢?

原文转自:http://www.jianshu.com/p/bce0fe294655