函数重构手段1,Extract Method,讲的是什么呢?把一个大函数改成几个小函数。
遇到的困难是什么呢?大函数里往往会有临时变量。下面分别简述对策:
A,没有临时变量,太好了,直接把这部分代码分到一个小函数里。
B,有临时变量?把他作为参数,传入小函数,经过处理之后,返回这个数。
C,多个临时变量怎么办?首先看看能否把这些变量分别用几个小函数处理,且返回。否则,就用杀手锏:Replace Method with Method Object。
函数重构手段2,Inline Method,讲的恰好是Extract Method的反面,即用函数体内容替换函数调用的地方。主要用在函数内容和函数名称同样清晰易读。
函数重构手段3,Inline Temp,与Inline Method从广义上讲类似,即用临时变量的表达式,替换使用该变量的地方。主要是因为临时变量只赋过一次值。结果就是可以减少临时变量的数量。
函数重构手段4,Replace Temp with query,就是把临时变量的表达式放到某个小函数里返回。前提仍然是,临时变量只赋了一次值。结果也是可以减少临时变量。
函数重构手段5,Introduce explaining variable,就是把复杂表达式拆分,用temp或query分别表达,最后把temp或query整合成表达式,目的就一个,使代码更易读。
函数重构手段6,Split temporary variable,就是如果一个临时变量被多次赋值,代表过多项意义时,就用多个变量代替这个变量,使得这多个变量分别代表不同的意义。
函数重构手段7,Remove assignments to parameters,是什么呢?即,不要对函数的虚参赋值。目的就是使代码更清晰。做法就是把参数赋给一个临时变量。
函数重构手段8,Replace method with method object,这个重构手段是函数重构的
杀手锏,无论你有多少个临时变量的函数,都可以被重构。做法是,另外申明一个“函数类”,把大函数里的临时变量作为“函数类”的成员变量,然后把大函数分解成“函数类”的多个小函数。
函数重构手段9,Substitute Algorithm,这个重构手段需要算法来支撑,即用一个更易读的算发替换另一个算法,但保持函数的功能不变。