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

瘦欲@ 提交于 2019-12-06 08:08:59

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

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!