在重构这本书看到以下内容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 计算。
这样不就是程序运行起来更加复杂了么。 
这样做是否真的有必要,求大鸟提点。谢谢

解决方案 »

  1.   

    不知道LZ的具体业务需求
    可以这么考虑,如果没有打折,那么获取的价格就是基本价格,所以提供获取基本价格方法也不是不合理
    而打折价,就是在基本价格的基础上做处理
    为了避免方法多次调用,理论上可以在方法体内部用个临时变量保存basePrice的返回值,用临时变量计算就可以了如果涉及到多线程,还要考虑同步问题