优化这段代码,复杂度降低到15以下:public AjaxResult selectDeviceByCode(HttpServletRequest request,@RequestParam Map<String, Object> form) { List<HashMap<String, Object>> list = facilityService.selectDeviceByCode(form); // 判断list是否为空 if (list == null || list.isEmpty()) { return AjaxResult.error("此设备不存在,请联系管理员"); } else { if (list.get(0).get(guestIdDetail) != null) { Attention attention = new Attention(); //设备绑定人 long beGuestId = Long.valueOf(list.get(0).get(guestIdDetail).toString()); attention.setBeGuestId(beGuestId); // 当前登入人 Long guestId = getAPPUserId(request); attention.setGuestId(guestId); //判断当前登入人与设备绑定人是否为同一人 if (attention.getGuestId().equals(beGuestId)) { return error("无法绑定自己的设备"); } // 判断是否关注亲友 List<Attention> attentionList = attentionService.selAttention(attention); if (attentionList != null && !attentionList.isEmpty()) { Attention attentionDetail = attentionList.get(0); if (attentionDetail.getOverTime() != null) { return error("该设备已被亲友绑定,且您已关注亲友"); } return error("已提交关注申请"); } } return success(list.get(0)); } }
时间: 2024-02-14 19:33:13 浏览: 111
这段代码的复杂度较高,需要进行一些优化,可以采用以下方法:
1. 将 if-else 结构中的 if 语句提取出来,避免嵌套过深;
2. 对于一些重复的变量和表达式,进行提取和复用;
3. 将一些判断条件合并,避免重复判断。
以下是优化后的代码:
public AjaxResult selectDeviceByCode(HttpServletRequest request, @RequestParam Map<String, Object> form) {
List<HashMap<String, Object>> list = facilityService.selectDeviceByCode(form);
// 判断list是否为空
if (list == null || list.isEmpty()) {
return AjaxResult.error("此设备不存在,请联系管理员");
}
// 获取设备绑定人
Object guestIdDetail = list.get(0).get("guestIdDetail");
if (guestIdDetail != null) {
Attention attention = new Attention();
//设备绑定人
long beGuestId = Long.valueOf(guestIdDetail.toString());
attention.setBeGuestId(beGuestId);
// 当前登入人
Long guestId = getAPPUserId(request);
attention.setGuestId(guestId);
//判断当前登入人与设备绑定人是否为同一人
if (attention.getGuestId().equals(beGuestId)) {
return error("无法绑定自己的设备");
}
// 判断是否关注亲友
List<Attention> attentionList = attentionService.selAttention(attention);
if (attentionList != null && !attentionList.isEmpty()) {
Attention attentionDetail = attentionList.get(0);
if (attentionDetail.getOverTime() != null) {
return error("该设备已被亲友绑定,且您已关注亲友");
}
return error("已提交关注申请");
}
}
return success(list.get(0));
}
通过将 if-else 结构中的 if 语句提取出来,避免嵌套过深,将一些重复的变量和表达式提取和复用,将一些判断条件合并,可以将代码的复杂度降低到15以下,使代码更加简洁和易于维护。
阅读全文