这是为什么?
在重构这本书看到以下内容
Java code
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 计算。
这样不就是程序运行起来更加复杂了么。
这样做是否真的有必要,求大鸟提点。谢谢
------解决方案--------------------重构是函数名相同,但参数列表不同,即相同的函数名用不同的参数实现不同的功能,一般出现在一个类的内部。重写主要是子类重写父类的方法,方法的名称、参数、返回值都相同,即通过子类重写父类已实现的方法达到新的方法定义
不知道你那到底算什么
------解决方案--------------------把一样的操作都放到一起,这算是抽象吧。其实更准确点说,既然这个操作是大家都要做的,那么放到一起有利于程序维护。以为你改代码的时候只改一处就行了,而不是改散落到各处的代码,这样容易漏掉。
------解决方案--------------------能重复利用到的代码~~~可以考虑单独拿出来便于维护修改~·~
------解决方案--------------------不知道LZ的具体业务需求
可以这么考虑,如果没有打折,那么获取的价格就是基本价格,所以提供获取基本价格方法也不是不合理
而打折价,就是在基本价格的基础上做处理
为了避免方法多次调用,理论上可以在方法体内部用个临时变量保存basePrice的返回值,用临时变量计算就可以了
如果涉及到多线程,还要考虑同步问题