重构是安全地改善既有代码设计的一门艺术.有以下几种含义:
- 重构并不包括对系统的所有修改.如果修改是对设计的改善, 或是增加新的功能, 则均不能被认为是重构. 例如, 极限编程(XP)使用了测试驱动开发(TDD), 这包括先编写一个测试, 然后编写新代码引入新的特性, 最后再重构以改善设计.
- 重构并非从头开始重新编写. 重构可以改变平衡点, 从而有可能改善代码, 而无需承受重新编写的风险.
- 重构并不仅仅是用于改善代码的某种结构更改. 重构(refactoring)和更改结构(restructuring)的区别. 重构力图达到一种安全的转换. 如果所做的修改使得代码在超出一个工作期时就无法正常工作或运转, 那么不能这种修改是重构.
- 重构会改变预先设计(up-front design)和紧急设计(emergent design)之间的平衡点. 预先设计是在实现之前所完成的设计; 而紧急设计则是在实现之中进行的设计.重构可以降低紧急设计方法的开销和风险.
- 重构规模可大可小. 许多重构规模都很小.