我想知道应该编写哪种类型的代码:
public BigDecimal getItemSubTotal(BigDecimal quantity) {
return getBasePrice().multiply(quantity).multiply(getRentalAdjustment()).add(getOtherAdjustments());
}
OR
public BigDecimal getItemSubTotal(BigDecimal quantity) {
BigDecimal basePrice = getBasePrice();
BigDecimal rentalAdj = getRentalAdjustment();
BigDecimal otherAdj = getOtherAdjustments();
return basePrice.multiply(quantity).multiply(rentalAdj).add(otherAdj);
}
除了代码可读性之外,哪个代码块更好?为什么? 哪个代码块将花费更少的时间和内存?
答案 0 :(得分:4)
除了代码可读性
这两个特定示例之间的唯一区别是,在第一种情况下,如果getRentalAdjustment()
调用失败,则不会进行对getOtherAdjustments()
和BigDecimal.multiply
的调用。
BigDecimal.multiply
失败的唯一记录方法是将其传递给空操作数。 (而且,当然,如果multiply
返回null,也将在null接收者上调用getBasePrice()
。
除此之外,什么都没有。这完全取决于可读性。
答案 1 :(得分:0)
给出:
我会选择:
public BigDecimal getItemSubTotal(BigDecimal quantity) {
return getBasePrice()
.multiply(quantity)
.multiply(getRentalAdjustment())
.add(getOtherAdjustments());
}
答案 2 :(得分:-1)
这可能取决于您的要求。但我想强调一些要点,例如: