Inline Temp
概述
一个临时变量,只被一个简单表达式赋值一次,而它妨碍了其它重构手法。
动机(Motivation)
Inline Temp多半是作为Replace Temp with Query的一部分来使用。惟一单独使用Inline Temp的情况是:你发现某个临时变量被赋予某个函数调用的返回值。一般来说,这样的临时变量不会有任何危害,你可以放心地把它留在那儿。但如果这个临时变量妨碍了其它重构手法---例如Extract Method,就应该将它inline化。
作法(Mechanics)
1、如果这个临时变量并未被声明为final,那就将它声明为final,然后编译。
这可以检查该临时变量是否真的只被赋值一次。
2、找到该临时变量的所有引用点,将它们替换为为临时变量赋值的语名中的等号右侧表达式。
3、每次修改后,编译并测试。
4、修改完所有引用点之后,删除该临时变量的声明式和赋值语名。
public class InlineTemp { //before inline-temp public double GetUserSalary(String name) { double salary = userSalary(name); return salary ; } //after inline-temp public double userSalaryAdvanced(String name) { return userSalary(name); } public double userSalary(String name){ if("王有财".equals(name)){ return 10000.0; } return 0; }}