重构手法之内联临时变量(Inline Temp)

893 阅读1分钟

问题场景: 一个变量仅仅被赋值了一次,且妨碍了其他重构手法

问题代码:

double  basePrice = order.getPrice();
return (basePrice > 1000)

使用场景:

  • 作为“Replace Temp With Query”手法的一部分
  • 某个临时变量被某个函数返回值所赋值
  • 这个临时变量影响了其他手法的使用

优化代码:

return(order.getPrice > 1000);

内联化流程:

  1. 检查右边的返回值不会带来副作用(如返回意料以外的值)
  2. 尝试声明临时变量为final,确保只被赋值一次
  3. 找到临时变量的引用点切换为对应表达式
  4. 重构完之后,编译测试