优化这段代码: @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()); if (id == null) return baseDataList; 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 13:43:20 浏览: 11
可以优化这段代码,将其重构为以下形式:
```
@RequestMapping(path = "/reqType", method = RequestMethod.POST)
public List<BaseDataResponse> reqType(@RequestBody(required = false) Short id) {
List<BaseDataResponse> baseDataList = businessTypeService.findByItfAppCode("xxx")
.stream().map(x -> new BaseDataResponse(x.getId(), x.getName()))
.collect(Collectors.toList());
if (id != null) {
BaseDataResponse baseDataResponse = baseDataList.stream()
.filter(x -> id.equals(x.getValue())).findAny().orElse(null);
if (baseDataResponse == null) {
BusinessTypeInfo businessType = businessTypeService.getBusinessTypeById(id);
baseDataList.add(new BaseDataResponse(businessType.getId(), businessType.getName()));
}
}
return baseDataList;
}
```
主要的改进有:
1. 将返回类型由Object改为List<BaseDataResponse>,因为在代码中的返回值就是一个BaseDataResponse的List。
2. 将if语句的条件从id == null改为id != null,这样可以避免嵌套太多的if语句,同时也可以提高代码的可读性。
3. 将添加新的业务类型信息的代码移到if语句的内部,这样可以避免在if语句外部的代码中引用不必要的变量。