- 大家好!欢迎莅临厚土燎原的天地,深感荣幸能与您相遇在此,共同品读我的拙作。您的阅读如同春风化雨,对我而言意义非凡。衷心邀请您留下宝贵的评论与指点,每一字一句都是对我莫大的鼓励与鞭策。热烈欢迎,期待与您智慧碰撞,共绘思想的火花!
- 🌿🌿🌿 个人主页:厚土燎原
目录
什么是重构
重构就是通过调整程序代码来改善软件的质量、性能,使其程序的设计模式和架构
更趋合理,提高软件的扩展性和维护性。白话:优化代码,使得代码能让大家看明白,容易改,bug少。
为什么要重构
1、重构改进软件设计
很多时候我们是在没有真正理解原有设计的情况下去修改代码,不断的持续这个
过程会导致代码逐渐失去原有的结构,于是通过源码很难理解原有的设计。
代码的结构流失是累积性的、越难看懂的代码,它原有的设计腐败的更快、
而重构可以维持代码应有的形态。
2、重构使软件更容易理解
重构能更好的表达代码的意图。
1、自己改起来很方便
2、借助重构可以理解不熟悉的代码。
3、重构帮助找到bug
重构过程中会发现一些隐藏的bug。
4、重构提高编程速度
减少很多调试时间、代码质量越高,可读性越强、理解代码的时间更短。
什么时候去重构
重构应该是随时随地的进行,不需要专门拨出时间来重构。
ps:大规模的重构还是需要排期来做的。
好的时机:
1、添加新功能时重构
重构能够帮助我们理解原代码、理清代码的结构。
添加新特性不轻松、不方便、通过重构可以更容易加入新的功能。
2、修补错误时重构
加深理解,易于找到bug
3、代码code-review时重构
code-review肯定会发现一些问题,这个时候顺便重构是一个比较好的选择。
什么时候不要重构
1、重构的前提是现有代码大部分功能是可用的,如果不满足,就不要重构了,
不如重新写一个。
2、项目接近尾声也不要进行重构、因为没什么时间了、而且容易导致新的问题。
哪些代码需要重构:
1、重复代码。
1.1、同一个类两个函数有相同的表达式,使用extract method提炼重复代码,
然后两个函数调用这个提炼后的代码。
1.2、两个子类包含相同的表达式,使用extract method提炼重复的代码,
然后推入超类。
1.3、不相关的类出现重复代码,把重复代码抽到一个独立类中。
1.4、如果只是相似,需要将差异部分和相同部分区分,构成单独的函数。
然后发现可以使用模板方法模式。
2、过长函数:
代码行数太多,代码过长则难以理解、并且没有办法写注释。所以要对过长函数
进行拆分。使用extract method把适合集中的代码放到一起变成新的方法。
3、条件表达式
条件表达式,使用decompose conditional,把if里面的内容提取出来变成
一个新的函数。
4、循环
需要把循环和其内部的代码提炼到一个单独的函数。5、过大的类
引入了太多的实例变量,容易导致重复的代码。可以把大类拆成多个类,把不属于
该类的内容移到正确的位置。6、过长参数列
过长的参数列会导致方法难以理解,可以通过引入参数对象,把这些参数放到
参数对象里面,从而大大缩短参数列。
小技巧
有一个判断要提炼的代码的技巧。就是找注释、如果这个代码需要用注释来说明,
那么就可以将这段代码提炼为一个函数,哪怕只有一行。