1、 为什么要重构?
重构是整理代码设计的过程。在代码实现过程中往往不能保证代码的逻辑结构一直很好地满足面向对象的准则,且可给维护性也会慢慢变差,因此持续不断的重构是保证代码结构一直优雅的关键。修改一段结构很差的代码往往会引入很多bugs。定义:对软件内部结构的一种调整,目的是不改变软件“可察行为”的前提下提高可读性并降低修改成本。
2、 重构与设计的关系?
重构和设计可以理解成全局与局部的关系。因此重构并不是设计的改正措施,不能希望重构能把一个糟糕的设计变成优秀的设计。同时,在软件开发之前进行正确的设计也是十分重要的。设计是使用的技术、模块或组件的划分或类结构的定义等(根据设计时间的长短,细化程度不同)。
3、 重构与设计模式的关系?
既然重构是优化代码结构,而设计模式是前人总结精练后的优秀结构。那么重构时可以尽量考虑是否可以归纳到已有的设计模式中去。创新重要但高质量的代码更重要,实践证明复用前人的经验是保证代码质量的一条捷径。
4、 重构与Scrum的关系?
在使用敏捷开发进程中往往不能有太长的时间进行设计。通过明确的加入以重构为目的的迭代周期可能会取得更好的效果。
5、 如何保证重构不会引入新的bugs?
重构就意味着修改代码,修改代码就可能引入新的错误。因此重构只能保证设计的改进,而不能保证程序没有bugs。发现bugs的有效手段是充分有效的测试,而保证充分有效的测试的关键是自动测试用例的编写与使用。另外,小步测试也是一种十分有效的手段:1)在不确定一段代码的执行结果时最好能先执行一遍,2)每修改一些代码后都跟踪一下看其结果是否正确。
6、 如何重构?
Extract Method
Extract Class
Move Method
Move Field