Posted on 2009-08-12 02:48
在从未放弃的路上 阅读(121)
评论(0) 编辑 收藏
一.Extract method
当一个函数过长的时候,提炼出一些小的函数。主要有三种情况:
1.没有临时变量时,直接提取。
2.有临时变量,但临时变量的值在被提炼函数中不作改变,将temporary parameter传入extract method直接使用。
3.有临时变量,并且临时变量的值会多次被改变,在被提取的函数中将临时变量改变的值返回。
二.Inline method
将一段代码或拆分的函数重新inline到一个大函数中,除去不必要的间接调用。
Inline Temp,将只被赋值一次的临时变量替换为表达式本身,因为它可能妨碍了其它的重构。
三.Replace Temp With Query,将表达式提炼为函数,temp variable被赋值多次的情况,考虑使用split temporary variable.
四.Introduce Explaining Variable,将复杂表达式或者它的一部分的结果放到临时变量中,以变量名来解释表达式用途。在条件逻辑中通常具有使用意义。但它通常在extract method难以进行时才使用,因为它只能针对特定函数。
五.Split Temporary Variable,某个临时变量使用超过一次,将它拆分为多个临时变量。
六.Remove Assignments to Parameters,代码对参数进行赋值,用临时变量替代参数在代码中的位置。这样的代码让人迷糊,在JAVA中所有参数都是pass by value,不存在pass by refrence.
个人的理解,我认为当传递的参数是对象,java是copy了这个对象参数,它和传递的参数指向一个地址,当你对这个对象再赋值时,是将这个copy的对象参数重新指向了一个新的地址,而无法影响传进来的参数本身,但是你可以通过操作这个对象来修改它所指向的地址中的值。学过C,有指针概念的人我想应该不难理解。
七.Replace Method With Method Object,将函数放到对象中,局部变量变成值域。
八.Substitute Algorithm