Inline Temp(内敛临时变量)
程序员文章站
2024-03-21 20:21:28
...
动机
该方法多半是作为Replace Temp with Query的一部分使用的,所以真正的动机出现在后者那儿。唯一单独使用该方法的情况是:你发现某个变量被赋予某个函数调用的返回值。一般来说,这样的临时变量不会有任何危害,可以放心地把它留在那儿。但如果这个临时变量妨碍了其他的重构手法,例如Extract Method,你就应该把它内敛化。
做法
- 检查给临时变量赋值的语句,确保等号右边的表达式没有副作用。
- 如果这个临时变量并未声明为final,那就将它声明为final,然后编译(这可以检查该临时变量是否真的只被赋值一次)。
- 找到该临时变量的所有引用点,将它们替换为“为临时变量赋值”的表达式。
- 每次修改后,编译并测试。
- 修改完所有引用点之后,删除该临时变量的声明和赋值语句。
- 编译,测试。
范例
double basePrice = anOrder.basePrice();
return (basePrice > 1000);
重构后
return (anOrder.basePrice() > 1000);