优化一下这段代码: List<BigDecimal> batteryList=new ArrayList<>(); batteryList.add(new BigDecimal("5.00")); //电池金额 batteryList.add(new BigDecimal("20.00")); BigDecimal init_couponBattery = new BigDecimal("3.00");//取绝对值 为 电池应扣金额 20 for (BigDecimal battery :batteryList){ if(init_couponBattery.compareTo(BigDecimal.ZERO) == 0){ System.out.println("应该优惠 0.00"); }else { BigDecimal a = battery.subtract(init_couponBattery);// 剩余 5 if(a.compareTo(BigDecimal.ZERO) > 0 || a.compareTo(BigDecimal.ZERO) == 0){ System.out.println("应该优惠"+ init_couponBattery);//15 init_couponBattery=new BigDecimal("0.00"); }else{ init_couponBattery = battery.subtract(init_couponBattery).abs(); //15 System.out.println("应该优惠"+ battery);//5 } } }
时间: 2024-02-14 08:05:05 浏览: 72
可以优化的点有:
1. 可以使用 Arrays.asList 方法创建列表并初始化,避免多行代码。
2. 可以将 BigDecimal.ZERO 提取出来作为一个常量,提高代码可读性。
3. 可以将 compareTo(BigDecimal.ZERO) == 0 简化为 equals(BigDecimal.ZERO)。
4. 可以将 if(a.compareTo(BigDecimal.ZERO) > 0 || a.compareTo(BigDecimal.ZERO) == 0) 简化为 if(a.signum() >= 0)。
优化后的代码如下:
```java
List<BigDecimal> batteryList = Arrays.asList(new BigDecimal("5.00"), new BigDecimal("20.00"));
BigDecimal init_couponBattery = new BigDecimal("3.00");
final BigDecimal ZERO = BigDecimal.ZERO;
for (BigDecimal battery : batteryList) {
if (init_couponBattery.equals(ZERO)) {
System.out.println("应该优惠 0.00");
} else {
BigDecimal a = battery.subtract(init_couponBattery);
if (a.signum() >= 0) {
System.out.println("应该优惠" + init_couponBattery);
init_couponBattery = ZERO;
} else {
init_couponBattery = battery.subtract(init_couponBattery).abs();
System.out.println("应该优惠" + battery);
}
}
}
```
阅读全文