06 重新组织函数

Wu Jun 2019-03-22 22:09:09
13 重构 > 1 重构-改善既有代码的设计

1 Extract Method (提炼函数)

你有一段代码可以被组织在一起并独立出来。
将这段代码放到一个独立的函数中, 并让函数名称解释该函数的用途。

动机
做法

2 Inline Method (内联函数)

一个函数的本体与名称同样清楚易懂。
在函数调用点插入函数本体,然后移除函数

动机
做法

3 Inline Temp (内联临时变量)

一个临时变量,只被一个简单表达式赋值一次,而它妨碍了其他重构手法。
将所有对该变量的引用动作,替换为对它赋值的那个表达式自身

动机
做法

4 Replace Temp with Query (以查询取代临时变量)

你的程序以一个临时变量来保存一个表达式的运算结果。
将整个表达式提炼到一个独立的函数中。将这个变量的引用点替换为对这个新函数的调用。此后,新函数可被其它函数调用。

动机
做法

5 Introduce Explaining Variable (引入解释性变量)

你有一个复杂的表达式。
将该复杂表达式(或其中一部分)的结果放进一个临时变量,以次变量名称来解释表达式的用途。

动机
做法

6 Split Temporary Variable (分解临时变量)

某个临时变量被赋值超过一次,它既不是循环变量,也不被用于收集计算结果。
针对每次赋值, 创造一个独立、对应的临时变量。

动机
做法

7 Remove Assignments to Parameters (移除对参数的赋值)

代码对一个参数进行赋值。
以一个临时变量来取代改参数的位置。

动机
做法

8 Replace Method with Method Object (以函数对象取代函数)

你有一个大型函数, 其中对局部变量的使用使你无法采用Extract Method。
将这个函数放进一个单独对象中,如此一来局部变量就成了对象内的字段。然后你可以在同一个对象中将这个大型函数分解为多个小型函数。

动机
做法

由于所有局部变量都变成了字段,可以任意分解这个大型函数,不用传递任何参数。

9 Substitute Algorithm (替换算法)

要把某个算法替换为另一个更清晰的算法。
将函数本体替换为另一个算法。

动机
做法