extract medthod:把一段代码从原先的函数中提取出来,放进一个单独函数
Inline medthod:将一个函数调用动作替换为该函数本地。
如果在多次提炼以后,发现提炼的函数没有做任何实质性的事情,或者需要回溯恢复到原先的函数,就需要inline medthod
extract medthod
处理局部变量以及参数
动机
当看见一个过长的函数或者需要一段注释才能让人理解用途的代码,我会将这段代码房间一个独立函数
喜欢简短而命名良好的函数原因;
1>每个函数的例度都很小,函数的复用概率会增加
2>高层函数读起来就像一系列注释
3>函数都是细粒度,函数的复写hi更容易
函数名称要尽量接近函数本体之间的语义
做法
1>创建一个新函数,根据函数的意图来对它命名(以它做什么来命名,而不是怎么做命名)
只要新函数的名称能够以更好的方式昭示代码意图,应该提炼他,如果想不到更有意义的,就别动
2>将提炼的代码从原函数复制到新函数
3>仔细检查代码的变量
4>检查是否有临时变量
5>检查被提炼代码段,看看是否有任何局部变量的值被他改变。
6>将代码中的局部变量当做参数传给目标函数
7>处理完所有的局部变量,进行编译
8>在源函数中,将被提炼代码段替换为对目标函数的调用
9>编译,测试
Inline method
动机
去掉没有价值的间接层
做法
1>检查函数,确定它不具多态
2>找出函数的所有被调用点
3>将这个函数的所有被调用点替换为函数本体
4>编译,测试
5>删除该函数的定义
inline temp
动机
发现某个临时变量被赋予某个函数调用的返回值
做法
1>检查给临时变量赋值的语句,确保等号右边的表达没有副作用
2>如果这个临时变量并未被声明为final,那就将他声明为final,然后编译
3>找到该临时变量的所有引用点,替换为“为临时变量赋值”的表达式
4>每次修改后,编译并测试
5>修改完所有引用点后,删除该临时变量的身边和赋值语句
6>编译,测试