帮我优化这段代码: //如果不存在组织信息,则禁用 if (ObjectUtil.isEmpty(empXwempInfo)) { flowProxyEntity.setStatus("1"); flowProxyEntity.setCloseReason(MessageFormat.format("原因:未查询到部门信息,权限关闭,时间:【{0}】", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))); } else if (ObjectUtil.isNotEmpty(proxyEntity)) { flowProxyEntity.setStatus("0"); } if(ObjectUtil.isNotEmpty(empXwempInfo)){ flowProxyEntity.setDeptCode(empXwempInfo.getDepartmentCode()); flowProxyEntity.setPositionCode(empXwempInfo.getPositioncode()); } if (ObjectUtil.isEmpty(proxyEntity)) { flowProxyService.save(flowProxyEntity); } else { flowProxyEntity.setId(proxyEntity.getId()); flowProxyService.updateById(flowProxyEntity); }
时间: 2024-02-14 18:07:47 浏览: 83
以下是对该段代码的优化建议:
1. 使用常量或枚举类型替代“1”和“0”这样的魔法数字,提高代码可读性和可维护性。
2. 避免多次判断 empXwempInfo 是否为空,可以在最开始对其进行一次判断后,将是否为空的结果保存为一个布尔值,后面直接使用这个布尔值即可。
3. 对于 save 和 updateById 操作,可以使用一个变量来保存要执行的方法,避免重复代码。
4. 在设置 closeReason 的时候使用 StringBuilder 类型的变量,避免多次使用字符串拼接操作。
改写后的代码如下:
```
if (ObjectUtil.isEmpty(empXwempInfo)) {
flowProxyEntity.setStatus(Status.DISABLE.getCode());
StringBuilder closeReason = new StringBuilder("原因:未查询到部门信息,权限关闭,时间:【")
.append(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())).append("】");
flowProxyEntity.setCloseReason(closeReason.toString());
} else {
boolean isProxyNotEmpty = ObjectUtil.isNotEmpty(proxyEntity);
flowProxyEntity.setStatus(isProxyNotEmpty ? Status.ENABLE.getCode() : Status.DISABLE.getCode());
flowProxyEntity.setDeptCode(empXwempInfo.getDepartmentCode());
flowProxyEntity.setPositionCode(empXwempInfo.getPositioncode());
FlowProxyService.MethodToExecute methodToExecute = isProxyNotEmpty ?
FlowProxyService.MethodToExecute.UPDATE : FlowProxyService.MethodToExecute.SAVE;
if (methodToExecute == FlowProxyService.MethodToExecute.SAVE) {
flowProxyService.save(flowProxyEntity);
} else {
flowProxyEntity.setId(proxyEntity.getId());
flowProxyService.updateById(flowProxyEntity);
}
}
```
其中,Status 是一个枚举类型,表示状态码,MethodToExecute 是一个枚举类型,表示要执行的方法。这样,代码就更加简洁、易读、易维护了。
阅读全文