1. 重构定义
重构(名词):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。
重构(动词):使用一系列手法,在不改变软件可观察行为的前提下,调整其结构。
注:重构过程中,应该保持代码在大部分时间内是可工作状态的,并且在软件开发过程中,重构和添加新功能一般是交替进行的。
2. 重构意义
2.1 改进软件设计
如果软件开发中没有重构,程序员因为短期目的而修改代码时,经常不会完全理解架构的整体设计,随着代码的增多,代码的整体结构也会逐渐消失,程序员会越来越难理解源码原来的设计,因此,经常性的重构有助于代码保持原有的设计思路。
设计欠佳的代码往往有很多重复代码,且这些重复代码几乎在做同样的功能,如果该功能进行修改,则需要在用到该功能的所有地方进行修改,重复代码越多,修改的难度就越大,因此,通过重构消除重复代码,可以减少修改的难度。
2.2 使软件更容易理解
程序就是人类与计算机对话的方式,也就是我告诉计算机去做什么,给计算机下指令,未来可能有其他的程序员来读我的代码,如果没有重构,其他程序员想要理解我的代码可能需要花费一周时间,如果通过重构让代码变得更易于理解,那么同样的修改可能只需要花费一个小时的时间。
2.3 帮助找BUG
对代码进行重构,可以使得代码更模块化,程序员可以更容易理解代码的所作所为,立即把新的理解反应在代码当中,搞清楚程序结构的同时,也验证了自己的对出现bug情况的一些假设,可以更快的定位到bug。
2.4 提高开发效率
代码开发过程中,往往需要考虑代码的可维护性,也就是说我们不能仅仅基于当下,应该往更长远的未来考虑,如果我们前期重构的不好,后期添加新功能时可能会花费更多的时间,并且不断蹦出来的BUG修复起来也越来越慢,甚至可能到最后程序员不得不从头开始重写整个系统,因此,一般需要遵守设计耐久性假说,通过投入精力改善内部设计,增加软件的耐久性。
3. 重构时机
- 添加新功能之前,先看下旧代码是否有重构点,重构完之后再添加新功能。
- 当看到一段代码后,并不能一眼愁出来它的作用,那么就应该考虑下是否能够通过重构来令其一目了然。
- 若发现某段代码容易重构,则马上重构;若重构操作需要花费一些精力,则可以用便签纸先记下来,完成当下工作后,再进行重构。
- 一段凌乱的代码,若不需要修改它,就先不进行重构;当重写比重构还容易时,就别重构。
·