一、概念
运用一系列重构手法,对既有软件内部结构进行调整,在不改变可观察外在行为的前提下,让软件更容易理解、扩展、维护。
二、为什么重构
程序有两方面的价值:今天可以做什么,明天可以做什么。对于今天的工作,开发人员了解得很清楚;但是对于明天的事情,了解得不充分,也不可能很充分。对于只考虑了今天的程序和对明天了解不充分的程序,需要持续地重构。在添加功能、修改错误和代码审核时都可以进行重构。
三、重构与设计
重构与设计是互补的关系,设计是在编码前完成、找到一种系统的合理解决方案(不一定是最好的),重构是在编码和后期维护的过程中逐渐优化,逐渐达到最好、最适合。设计和重构相辅相成,共同担负起代码结构优化的重任。
四、重构与性能
重构必然会是程序变慢,但会让软件的优化更易进行。重构后函数粒度很小,有利于性能分析;重构后的代码更容易修改,让解决性能瓶颈更加容易。除了性能要求很严格的系统,其它情况下,都最好先写出可调的软件,然后逐渐调整(调试、监控、分析等方式),获得足够高的速度,满足性能要求。
五、重构前提
构筑测试体系
六、重构最佳实践
1. 重新组织函数
2. 对象间搬移对象特性
3. 重新组织数据
4. 简化条件表达式
5. 简化函数调用
6. 处理概括关系
7. 大型重构:将大型系统分解成小的系统,对小系统进行重构