优化这段代码: @RequestMapping(path= "/reqType", method = RequestMethod.POST) public Object reqType(@RequestBody(required =false) Short id) { List<BaseDataResponse> baseDataList = businessTypeService.findByItfAppCode("xxx").stream().map(x -> new BaseDataResponese(x.getId(), x.getName())).collect(Collectors.toList()); BaseDataResponse baseDataResponse = baseDataList.stream().filter(x -> id.equals(x.getValue))).findAny().orElse(null); if (baseDataResponse == null) { BusinessTypeInfo businessType = businessTypeService.getBusinessTypeById(id); baseDataList.add(new BaseDataResponese(x.getId(), x.getName())); } return baseDataList; }
时间: 2024-03-20 11:42:49 浏览: 99
可以优化的地方如下:
1. 将业务类型的查询和转换逻辑提取出来,放到一个独立的方法中,以提高代码的可读性和复用性。
2. 使用 Optional 和 Lambda 表达式来简化代码,避免使用 if...else 语句。
3. 参数校验时可以使用 Objects.isNull() 方法,避免使用 == null。
优化后的代码如下:
```java
@RequestMapping(path = "/reqType", method = RequestMethod.POST)
public Object reqType(@RequestBody(required = false) Short id) {
List<BaseDataResponse> baseDataList = getBaseDataList();
BaseDataResponse baseDataResponse = baseDataList.stream()
.filter(x -> Objects.equals(id, x.getValue()))
.findAny()
.orElse(null);
if (Objects.isNull(baseDataResponse)) {
BusinessTypeInfo businessType = businessTypeService.getBusinessTypeById(id);
baseDataList.add(new BaseDataResponse(businessType.getId(), businessType.getName()));
}
return baseDataList;
}
private List<BaseDataResponse> getBaseDataList() {
return businessTypeService.findByItfAppCode("xxx").stream()
.map(x -> new BaseDataResponse(x.getId(), x.getName()))
.collect(Collectors.toList());
}
```
阅读全文