重构 改善既有代码设计---第六章 重新组织函数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/maiyikai/article/details/85984657

6.1 提炼函数
什么时候用?
到一个方法过长或某段代码需要注释写明才能更好理解时,使用提炼
1.创造一个新函数(好的命名:函数名可以更接近的表达函数功能)
2.将需要提炼的代码移动到新建的函数中
3.检查提炼出来的代码,是否引用了“作用域限于源函数”的变量(包括局部变量和原函数参数)
4.检查是否有“仅用于被提炼代码段”的临时变量。如果有,在目标函数中重新定义
5.检查被提炼的代码,看看是否有任何局部变量的值被它修改。如果有一个,则看能不能将其提炼代码作为一个查询,并将结果赋值给相关变量。如果有多个,你就不能仅仅将代码原封不动的提炼出来,可以尝试使用“拆分临时变量”,然后再提炼。也可以尝试使用“查询替换临时变量”来消除这些临时变量
6将提炼的代码中的需要读取的局部变量,当做参数传递给目标函数。
7.在目标函数中将被提炼的代码段更改为对目标函数的调用。
8.确认程序可以正常执行和结果一致,则重构完成

6.2 內联函数:在函数调用点插入函数本体,然后移除函数

6.3 內联临时变量:将所有对该变量的引用动作,替换为对它赋值的那个表达式自身。

6.4以查询取代临时变量:将表达式提炼到一个独立函数中,将这个临时变量的所有引用点替换为对新函数的调用。此后,新函数就可被其他函数使用。

6.5 引入解释性变量:将复杂表达式(其中一部分)的结果放进一个临时变量,以此变量名称来解释表达式用途。

6.6 分解临时变量:针对每次赋值,创造一个独立、对应的临时变量。
1.“循环变量和结果收集变量”不能分解。

6.7移除对参数的赋值:以一个临时变量取代该参数的位置
1.直接使用参数赋值,有可能使参数失去原有旳意义,增加代码理解难度。

6.8 以函数对象取代函数:将这个函数放进一个单独对象中,如此一来局部变量就变成了对象内的字段。然后你可以在同一个对象中将这个大型函数分解为多个小型函数。

6.9替换算法:将函数本体替换为另一个算法。

运用简单的重构方式,对代码进行整理。

猜你喜欢

转载自blog.csdn.net/maiyikai/article/details/85984657