通常情况下,在进行程序设计的过程中,使用临时变量来存储一些表达式计算的值。这其中存在着一些问题:
- 代码可读性差。因为代码阅读者需要理解表达式的含义和目的,这样注意力就深入至表达式内部,从而降低了阅读效率和对程序整体的把握。
- 不利于其他重构。因为这样做程序中会出现很多临时变量,不利于【提取方法】等其他重构。
现在,就提出了【用查询方法代替临时变量】的重构来解决上述问题。
- 适用场合:用临时变量来保存表达式计算的结果
- 解决方法:将表达式提取为方法。用新方法代替所有原临时变量的引用
- 动机:临时变量的问题在于其临时性和局部性。它们只能在当前方法的上下文中访问,因为这是访问临时变量的唯一方法,从而导致了方法过长。因为局部变量不利于提取方法,所以【用查询方法代替临时变量】通常会在【提取方法】重构之前使用。
【用查询方法代替临时变量】处理过程:
- 寻找只被一次赋值的临时变量
- 将变量声明为final
- 编译,确保变量只被赋值一次
- 将赋值表达式右端代码提取为方法
- 编译并测试