重构定义
对软件内部结构的一种调整,在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。
为什么要重构
重构可以达到以下目的:容易阅读;所有逻辑都在唯一地点指定;新的改动不会危及现有行为;尽可能简单表达条件逻辑。
改进软件设计
重构就像是对代码的整理,让代码处在本应该在的位置,使软件随着时间流逝和版本迭代依然能够保持结构稳定、清晰、可修改。
使软件更容易理解
代码不仅仅是告诉计算机需要做什么,更多的时候,代码是需要给其他人看的,或者是过很久自己回看,如果代码逻辑混乱,冗余繁杂,对于阅读代码的人来说就很痛苦。所以在重构的时候,我们需要让代码自己表达出来自己的用途和逻辑。
有助于找到 bug
我们不能很容易的找到 bug ,很多时候都是我们代码的结构不清晰,逻辑不清晰。重构代码,可以帮助我们发现那些隐藏的问题。
有助于提高编程效率
重构代码以后,结构更加清晰,逻辑更加清晰,更加容易修改和扩展,编码的效率自然就提高了。
重构产生的间接层的优点
- 允许逻辑共享,比如拆分出来的方法,可以被多个对象使用,减少代码冗余。
- 分开解释意图和实现。一个大的类或者是方法,往往不能很好的描述自己要做什么,这时候,拆分成过个类,或者是多个方法,能让程序具有更好的自解释性。
- 隔离变化,修改代码的时候,不会危及原有行为
- 封装条件逻辑。使用多态可以有效的避免大量的条件逻辑判断。降低代码的重复就,增加清晰度并且提高弹性。
何时重构
重构不是一件需要专门安排时间来做的事情。应该随时随地重构,重构需要有目的性,为了满足我们的某些需求而重构,比如:让代码更加容易理解,便于自己和其他同事在后续维护的时候,花更少的精力去理解代码;使代码更容易修改和扩展,修改一处,不会对其他地方造成影响,扩展一个新功能,不需要去大量修改原有的代码。
以下时机可以帮助我们确定在什么时候需要重构:
三次法则
事不过三,三则重构。第一次写某段代码的时候,尽管去写;第二次写某段代码的时候,可能产生反感,但还是要写;第三次还在写某段代码的时候,应该重构了。
添加新功能的时候重构
最常见的重构时机就是需要添加新功能的时候。此时,重构的直接原因就是为了帮助我理解代码——这段代码可能是我自己写的,也可能是别人写的。原有代码不方便我们添加新的独特性,重构后,能让我们更加方便、快速、安全的添加新特性。
修补错误的时候重构
在调试的时候重构,多半是为了让代码更具有可读性,重构代码,是为了帮助我们加深对代码的理解。往往我们不能很快的定位程序的问题,可能就是因为代码存在一定的缺陷。
网友评论