最后再啰嗦一篇吧,分享些宏观经验。
大规模代码重构,不可避免要触到很多模块的很多代码,很可能破坏功能,到时候你就成众矢之的了,tickets扑面而来,到处灭火。
怎么确保不破坏功能呢?就要做安全重构。
- 充分了解系统架构,调查各种代码模式和场景(争取发现corner case),手工重构几个试试。
- 尽量做等价变换,把代码改成等价形式,一般都是安全的。(我应老大要求做了一种非等价变换,结果大多数bug都出在这。)
- 绝不能改变代码语义(重构本来就不该改变语义)。
- 为代码模式和场景确立一组明确的前提条件,重构必须满足前提条件才能进行。
- 如果完美做到以上三点,新代码基本上是不需要测试的(抽样测一点即可),否则要做针对性的测试。
- 简单重构只需要语法分析,复杂重构可能需要语义分析。该做的工作要做足,别出篓子。
- 难以自动判断的场景,可以作标记(例如在该位置制造编译错误)。自动重构结束后,找到标记(例如编译一遍),然后人工处理。
- 尽可能自动化。一来节约人力,二来机械重复的人工操作极易出错,而机器是不会犯错的。因此自动重构是革命性的技术。
是不是写得太抽象太简短?大家给点反馈。