在重构这本书看到以下内容double getPrice(){
int basePaice=quantity*ite3mPrice;
double discountFactor;
if(basePrice>1000)discountFactor=0.95;
else discountFactor=0.98;
return basePrice * discountFactor;
}
//这个方法被重构成
double getPrice(){
double discountFactor;
if(basePrice()>1000)discountFactor=0.95;
else discountFactor=0.98;
return basePrice()* discountFactor;
}double basePrice(){
return quantity*ite3mPrice;
}
个人觉得这样会多次使用到basePrice().每次使用时候都需要quantity*ite3mPrice 计算。
这样不就是程序运行起来更加复杂了么。
这样做是否真的有必要,求大鸟提点。谢谢
int basePaice=quantity*ite3mPrice;
double discountFactor;
if(basePrice>1000)discountFactor=0.95;
else discountFactor=0.98;
return basePrice * discountFactor;
}
//这个方法被重构成
double getPrice(){
double discountFactor;
if(basePrice()>1000)discountFactor=0.95;
else discountFactor=0.98;
return basePrice()* discountFactor;
}double basePrice(){
return quantity*ite3mPrice;
}
个人觉得这样会多次使用到basePrice().每次使用时候都需要quantity*ite3mPrice 计算。
这样不就是程序运行起来更加复杂了么。
这样做是否真的有必要,求大鸟提点。谢谢
可以这么考虑,如果没有打折,那么获取的价格就是基本价格,所以提供获取基本价格方法也不是不合理
而打折价,就是在基本价格的基础上做处理
为了避免方法多次调用,理论上可以在方法体内部用个临时变量保存basePrice的返回值,用临时变量计算就可以了如果涉及到多线程,还要考虑同步问题