这是为什么?

=PNZ=BeijingL 2011-11-07 02:05:40
在重构这本书看到以下内容

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 计算。
这样不就是程序运行起来更加复杂了么。
这样做是否真的有必要,求大鸟提点。谢谢
...全文
87 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
=PNZ=BeijingL 2011-11-08
  • 打赏
  • 举报
回复
谢谢各位。小鸟学到很多
上面代码是从《重构》书中摘出来的
qybao 2011-11-07
  • 打赏
  • 举报
回复
不知道LZ的具体业务需求
可以这么考虑,如果没有打折,那么获取的价格就是基本价格,所以提供获取基本价格方法也不是不合理
而打折价,就是在基本价格的基础上做处理
为了避免方法多次调用,理论上可以在方法体内部用个临时变量保存basePrice的返回值,用临时变量计算就可以了

如果涉及到多线程,还要考虑同步问题
nizhicheng 2011-11-07
  • 打赏
  • 举报
回复
能重复利用到的代码~~~可以考虑单独拿出来便于维护修改~·~
jc8futao 2011-11-07
  • 打赏
  • 举报
回复
把一样的操作都放到一起,这算是抽象吧。其实更准确点说,既然这个操作是大家都要做的,那么放到一起有利于程序维护。以为你改代码的时候只改一处就行了,而不是改散落到各处的代码,这样容易漏掉。
CloudX2019 2011-11-07
  • 打赏
  • 举报
回复
重构是函数名相同,但参数列表不同,即相同的函数名用不同的参数实现不同的功能,一般出现在一个类的内部。重写主要是子类重写父类的方法,方法的名称、参数、返回值都相同,即通过子类重写父类已实现的方法达到新的方法定义


不知道你那到底算什么

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧