重构是在不改变软件可观察行为的前提下,改善其内部结构。重构的目的是使软件更容易被理解和修改。
视频地址:
https://www.zentao.net/xp/code-refactoring-80324.html
1、为什么要重构?
- 重构可以减少技术债务
重构让代码更清晰且容易理解,以便让其他程序员也能更轻松地维护和添加新功能。重构可以避免我们将时间精力过度花在理解系统、寻找重复代码上。
- 重构改进软件设计
如果没有重构,程序设计会逐渐腐败变质。重构很像是在整理代码,经常性重构可以帮助代码维持自己该有的形态。
- 重构使软件更容易理解
刚开始进行重构时,虽然代码可以正常运行,但结构可能不够理想。但只要在重构上花一点时间,就可以让代码更好地表达自己的用途。
- 重构帮助找到Bug
通过不断重构,清楚掌握代码结构,有助于我们快速找出Bug,进而帮助我们更有效地写出更好的代码。
2、何时重构?
团队不需要单独拿出大块时间来做重构,也不需要为了重构而重构,重构应该随时随地进行。
- 三次法则
当我们第一次执行某操作时,只管去做,即便代码有待提升;
第二次做类似操作时,代码仍然有待提升,但依旧可以完成;
第三次做类似事情时,请开始重构。
- 添加功能时重构
为软件添加新功能时,通过重构可以帮助我们更好地理解代码。同时,当发现代码设计无法支持我们添加新功能时,也可以用重构来弥补它。通过重构,使得新特性的添加更顺畅、快捷。
- 修补错误时重构
调试过程中运用重构,主要是为了让代码更具可读性,以帮助我们找出Bug。比如当系统弹出错误报告时,这其实就是需要重构的信号,因为显然代码还没有清晰到能让我们迅速发现Bug。
- 代码评审时重构
重构可以帮助我们复审别人的代码。重构前我们可以先阅读并理解代码,提出一些建议。当有新点子时,可以考虑通过重构去实现它,这不仅有助于我们提出更多恰当的建议,还能使代码评审得到更具体的结果。
3、两顶帽子
Kent Beck 提出了“两顶帽子”的比喻。使用重构技术开发软件时,先戴上实现功能的帽子,在测试的辅助下,快速实现其功能;再戴上重构的帽子,在测试的保护下,通过去除冗余的代码,提高代码质量。
重构也并非银弹,没有什么银弹流程或实践可以让项目完美运作。欢迎大家关注极限编程系列往期视频,了解更多极限编程实践方法 。