重构之重新组织函数(Inline Temp)

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;
}
}

 

posted on 2019-12-02 14:14  低调的小郭  阅读(214)  评论(0编辑  收藏  举报