9.1. 返回条件表达式
条件表达式判断返回布尔值,条件表达式本身就是结果。
普通:
public boolean isSuper(Long userId) {
UserDO user = userDAO.get(userId);
if (Objects.nonNull(user) && Boolean.TRUE.equals(user.getIsSuper())) {
return true;
}
return false;
}
精简:
public boolean isSuper(Long userId) {
UserDO user = userDAO.get(userId);
return Objects.nonNull(user) && Boolean.TRUE.equals(user.getIsSuper());
}
9.2. 最小化条件作用域
最小化条件作用域,尽量提出公共处理代码。
普通:
Result result = summaryService.reportWorkDaily(workDaily);
if (result.isSuccess()) {
String message = "上报工作日报成功";
dingtalkService.sendMessage(user.getPhone(), message);
} else {String message = "上报工作日报失败:" + result.getMessage();
log.warn(message);
dingtalkService.sendMessage(user.getPhone(), message);
}
精简:
String message;
Result result = summaryService.reportWorkDaily(workDaily);
if (result.isSuccess()) {
message = "上报工作日报成功";
} else {
message = "上报工作日报失败:" + result.getMessage();
log.warn(message);
}
dingtalkService.sendMessage(user.getPhone(), message);
9.3. 调整表达式位置
调整表达式位置,在逻辑不变的前提下,让代码变得更简洁。
普通 1:
String line = readLine();while (Objects.nonNull(line)) {
... // 处理逻辑代码
line = readLine();
}
普通 2:
for (String line = readLine(); Objects.nonNull(line); line = readLine()) {
... // 处理逻辑代码
}
精简 :
String line;
while (Objects.nonNull(line = readLine())) {
// 处理逻辑代码
}
注意 :有些规范可能不建议这种精简写法。
9.4. 利用非空对象
在比较对象时,交换对象位置,利用非空对象,可以避免空指针判断。
普通:
private static final int MAX_VALUE = 1000;boolean isMax = (value != null && value.equals(MAX_VALUE));
boolean isTrue = (result != null && result.equals(Boolean.TRUE));
精简:
private static final Integer MAX_VALUE = 1000;boolean isMax = MAX_VALUE.equals(value);
boolean isTrue = Boolean.TRUE.equals(result);
正文完