如何理解重构
重构概述
重构是一种对软件内部结构的改善,目的是在不改变软件的可见行为的情况下,使其更易理解,修改成本更低。即在保持功能不变的前提下,利用设计思想、原则、模式、编程规范等理论来优化代码,修改设计上的不足,提高代码质量。
重构的目的:为什么要重构(why)
- 维持代码质量的有效手段。随着项目的演进和扩张,如果没有人为的为代码负责任,代码就会朝着更加混乱的方向走去。随着时间的演进,混乱程度愈演愈烈,最终导致无法重构、只能重写。
- 持续迭代。没有最好的解决方案,只有最适合当下的解决方案。我们没法完全预测到所有的需求,随着市场的变化,重构是不可避免的。
- 技术成长的有效手段。重构是一个综合运用设计思想,设计原则,设计模式,编程规范的最好实践。避免成为只懂理论人。
重构的对象:到底重构什么(what)
- 顶层代码设计:系统、模块、代码结构等。主要手段有分层、模块化、接耦、抽象可复用组件等。范围大,影响广,耗时长,bug 多。
- 细节层面:过长类,不合理命名,规范注释等。一般涉及到的是编码规范层面的内容。范围小,耗时短,不易引起 bug。
重构的时机:什么时候重构(when)
随时随地。技术在更新、需求在变化、人员在流动,代码质量总会下降,代码总会存在不完美,重构就会持续在进行。时刻具有持续重构意识,才能避免开发初期就过度设计,避免代码维护的过程中质量的下降。
重构的方法:又改如何重构(how)
大型重构要提前做好完善的重构计划,分阶段小步快跑。每个阶段完成小部分代码重构,进行提交、测试、运行,经过验证后再进行下一阶段的重构。 小型重构通常在任务中,或者单独提一个 bug 就可以去处理。 为了有持续重构的效果,最好的办法,还是要打造一个好的技术氛围,以此来驱动大家主动去关注代码质量,持续重构代码