所以基本上我在这里有一个例子,我在这里创建两个方法,一个从包含单位价格的类返回全价,另一个方法返回折扣后的价格。
public int getFullPrice(Product product){
int pricePerUnit = product.getPricePerUnit();
int fullPrice = this.quantity * pricePerUnit;
return fullPrice;
}
public int priceAfterDiscount(Product product){
int pricePerUnit = product.getPricePerUnit();
int fullPrice = this.quantity * pricePerUnit;
return fullPrice - this.discountRate;
}
我想知道在第一个可以传递给第二个方法的方法中创建变量是否更好的做法,或者这是不好的做法,因为尽管我可能正在重用代码,如果第二个方法已被执行,它会之前必须先经过第一种方法吗?
public int getFullPrice(Product product){
int pricePerUnit = product.getPricePerUnit();
int fullPrice = this.quantity * pricePerUnit;
return fullPrice;
}
public int priceAfterDiscount(int fullPrice){
return fullPrice - this.discountRate;
}
我不能100%确定它是否从第一种方法中获取fullPrice。或者我采取的方法是否不合理。我知道在不重复代码的情况下,必须采用更简单的方式来实现这一目标
答案 0 :(得分:4)
相反怎么样?
public int getFullPrice(Product product){
int pricePerUnit = product.getPricePerUnit();
return this.quantity * pricePerUnit;
}
public int priceAfterDiscount(Product product){
return getFullPrice(product) - this.discountRate;
}
答案 1 :(得分:4)
依赖于副作用的代码行为,特别是以前执行的代码的副作用几乎总是一个坏主意。
如果在两个公共方法之间共享公共代码,则更好的方法是将公共代码重构为私有或受保护的方法。
在这种情况下,折扣后的价格与完整价格计算的计算完全相同,因此请先调用它然后发布流程以减少重复的代码。 (如果我明白的话):
public int getFullPrice(Product product){
int pricePerUnit = product.getPricePerUnit();
int fullPrice = this.quantity * pricePerUnit;
return fullPrice;
}
public int priceAfterDiscount(Product product){
return getFullPrice(product) - this.discountRate;
}