一 次重构方式是用说明
临时变量只被赋值一次,校验是否只被赋值一次方式,将临时变量修饰符改成final类型,编译器无报错则证明只被赋值一次。
临时变量提到单独查询函数中,保证其他引用方法,不用写重复代码。
二 使用实例
//包含两个临时变量
double getPrice() {
int basePrice = quantity * itemPrice;
double discountFactor;
if (basePrice > 10000) {
discountFactor = 0.95;
} else {
discountFactor = 0.98;
}
return basePrice * discountFactor;
}
以查询代替临时变量
double getPrice() {
return basePrice() * discountFactor();
}
private double discountFactor() {
if (basePrice() > 10000) {
return 0.95;
} else {
return 0.98;
}
}
private int basePrice() {
return quantity * itemPrice;
}
三 备注
使用次方式,临时变量只能被赋值一次,要保证提炼出来的函数无副作用。
临时变量报错循环累加结果,也可以抽取成查询函数,一个循环中存在多个临时变量累加,可以抽取成多个方法,此方法可能引入性能问题,需要综合考虑后选择。