BigDecimal actMoney = billMaster.getBillActMoney(); needCharge = Objects.isNull(actMoney)?new BigDecimal("0"):actMoney.subtract(hasCharge); if(needCharge.compareTo(new BigDecimal("0")) == -1){ needCharge = new BigDecimal("0"); } billMaster.setHasChargeMoney(hasCharge); billMaster.setNeedChargeMoney(needCharge);如何优化这段代码
时间: 2023-07-16 14:16:19 浏览: 89
这段代码可以进行如下优化:
1. 对于BigDecimal类型的比较,可以使用BigDecimal.ZERO代替new BigDecimal("0"),这样可以避免创建一个BigDecimal对象。
2. 可以使用Optional类来简化代码,避免使用Objects类进行判空处理。
3. 对于BigDecimal类型的运算,可以使用BigDecimal的subtract方法来实现减法运算,而不是使用加法运算符和负数进行计算。
4. 在进行BigDecimal类型的比较时,可以使用compareTo方法的返回值来进行比较,避免使用等于、大于、小于等运算符。
优化后的代码如下:
```
BigDecimal actMoney = billMaster.getBillActMoney();
BigDecimal needCharge = actMoney == null ? BigDecimal.ZERO : actMoney.subtract(hasCharge);
needCharge = needCharge.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : needCharge;
billMaster.setHasChargeMoney(hasCharge);
billMaster.setNeedChargeMoney(needCharge);
```
通过这些优化,可以使代码更加简洁、高效、易读。
相关问题
优化这段代码 double getCir() { BigDecimal r = BigDecimal.valueOf(radius); BigDecimal pi = BigDecimal.valueOf(Pi); BigDecimal cir = r.add(pi).add(r); return cir.doubleValue(); }
这段代码可以优化为:
double getCir() {
BigDecimal r = BigDecimal.valueOf(radius);
BigDecimal pi = BigDecimal.valueOf(Pi);
BigDecimal cir = r.multiply(BigDecimal.valueOf(2)).add(pi.multiply(r));
return cir.doubleValue();
}
这样可以减少一次加法运算,提高代码的效率。
优化这段代码 double getCir() { BigDecimal a = BigDecimal.valueOf(x); BigDecimal b = BigDecimal.valueOf(y); BigDecimal cir = a.add(b).add(a).add(b); return cir.doubleValue(); }
这段代码可以进行如下优化:
double getCir() {
BigDecimal a = BigDecimal.valueOf(x);
BigDecimal b = BigDecimal.valueOf(y);
BigDecimal cir = a.multiply(BigDecimal.valueOf(2)).add(b.multiply(BigDecimal.valueOf(2)));
return cir.doubleValue();
}
将加法运算改为乘法运算,可以提高代码的效率。
阅读全文