在重构名录的开头,我首先介绍一组我认为最有用的重构。

我最常用到的重构就是用提炼函数(106)将代码提炼到函数中,或者用提炼变量(119)来提炼变量。既然重构的作用就是应对变化,你应该不会感到惊讶,我也经常使用这两个重构的反向重构—— 内联函数(115)和内联变量(123)。

提炼的关键就在于命名,随着理解的加深,我经常需要改名。改变函数声明(124)可以用于修改函数的名字,也可以用于添加或删减参数。变量也可以用变量改名(137)来改名,不过需要先做封装变量(132)。在给函数的形式参数改名时,不妨先用引入参数对象(140)把常在一起出没的参数组合成一个对象。

形成函数并给函数命名,这是低层级重构的精髓。有了函数以后,就需要把它们组合成更高层级的模块。我会使用函数组合成类(144),把函数和它们操作的数据一起组合成类。另一条路径是用函数组合成变换(149)将函数组合成变换式(transform),这对于处理只读数据尤为便利。再往前一步,常常可以用拆分阶段(154)将这些模块组成界限分明的处理阶段。

6.1 提炼函数(Extract Function)

6.2 内联函数(Inline Function)

6.3 提炼变量(Extract Variable)

6.4 内联变量(Inline Variable)

6.5 改变函数声明(Change Function Declaration)

6.6 封装变量(Encapsulate Variable)

6.7 变量改名(Rename Variable)

6.8 引入参数对象(Introduce Parameter Object)

6.9 函数组合成类(Combine Functions into Class)

6.10 函数组合成变换(Combine Functions into Transform)

6.11 拆分阶段(Split Phase)