Replace Temp With Query(以查询代替临时变量)

410 阅读1分钟

实例: 原函数:

    double basePrice = price * num;
    if (basePrice > 1000) {
      return basePrice * 0.95;
    } else {
      return basePrice * 0.98;
    }

优化后

 double basePrice() {
    return price * num;
  }

if (basePrice() > 1000) {
      return basePrice() * 0.95;
    } else {
      return basePrice() * 0.98;
    }

场景: 临时变量的问题在于:他们是局部的,且是暂时的,只在该函数内可见。 更改为查询之后可以被整个类使用。可以方便其他重构手法的使用。

做法:

  1. 找出只被赋值一次的临时变量
  2. 将该临时变量声明为final
  3. 编译 确定该函数仅被赋值一次
  4. 将赋值过程封装进一个独立函数之中,且声明为私有,日后有需求后可声明为其他
  5. 编译测试
  6. 对该临时变量使用inline Temp.