这段代码可以优化的更简洁吗? Object dayCompleteTaskMax = mapOptional.map(map -> map.get("day_complete_task_max")).orElse(0); int READING_TASK_LIMIT = Integer.parseInt(dayCompleteTaskMax.toString()); if(READING_TASK_LIMIT==0){ throw new BusinessRuntimeException(ErrorCodeConstant._3002552.getCode(), ErrorCodeConstant._3002552.getMessage()); }
时间: 2023-02-06 14:57:08 浏览: 103
这段代码可以优化的更简洁一些。
具体做法是:
1. 使用 mapOptional.orElseThrow() 方法来替代 mapOptional.map().orElse(),这样可以统一处理异常,并且代码更加简洁。
2. 使用 OptionalInt 类型来替代 Object 类型,这样可以省去转换为 int 类型的步骤,并且使用 OptionalInt 类型可以避免空指针异常。
3. 使用常量来替代魔法数字,这样可以提高代码的可读性。
修改后的代码可能长这样:
```
final int READING_TASK_LIMIT = mapOptional.orElseThrow(() -> new BusinessRuntimeException(ErrorCodeConstant._3002552.getCode(), ErrorCodeConstant._3002552.getMessage()))
.get("day_complete_task_max")
.map(dayCompleteTaskMax -> Integer.parseInt(dayCompleteTaskMax.toString()))
.orElseThrow(() -> new BusinessRuntimeException(ErrorCodeConstant._3002552.getCode(), ErrorCodeConstant._3002552.getMessage()));
```
但是,这段代码还有一些问题,需要进一步改进。
1. 使用 Optional 类型时,避免使用 get() 方法。
2. 使用 Optional 类型时,避免使用 toString() 方法。
3. 使用 Optional 类型时,避免使用 parseInt() 方法。
修改后的代码可能长这样:
```
final int READING_TASK_LIMIT = mapOptional.orElseThrow(() -> new BusinessRuntimeException(ErrorCodeConstant._3002552.getCode(), ErrorCodeConstant._3002552.getMessage()))
.get("day_complete_task_max")
.map(dayCompleteTaskMax -> (int) dayCompleteTaskMax)
.orElseThrow(() -> new BusinessRuntimeException(ErrorCodeConstant._3002552.getCode(), ErrorCodeConstant._3002552.get
阅读全文