No.1 布尔表达式长且复杂的重构解法
参考来源 https://testing.googleblog.com/2024/04/isbooleantoolongandcomplex.html
if (condition1 && condition2 && (condition3 || condition4)) {
// do some thing
}
步骤一:将条件提取到一个命名比较易读的变量中
A first step toward improving this is to extract the condition into a well-named variable
boolean flag = condition1 && condition2 && (condition3 || condition4);
if (flag) {}
步骤二:将详细信息分组到中间布尔值中
try to group the details into intermediate Booleans that provide meaningful abstractions
boolean flag1 = condition1;
boolean flag2 = condition2;
boolean flag3 = condition3 || condition4;
boolean flag = flag1 && flag2 && flag3
if (flag) {}
其他方式:将逻辑提取到单独的方法中
public boolean isFlag() {
if (!condition1) {
return false;
}
if (!condition2) {
return false;
}
return condition3 || condition4;
}
No.2 在列表处理中以管道代替循环
List idList = Lists.newArrayList();
for (OrderDTO orderDTO : orderDTOList) {
if (condition1) {
continue;
}
if (condition2) {
continue;
}
String orderId = orderDTO.getId();
if (orderId == null) {
continue;
}
result.add(orderId);
}
idList = orderDTOList.stream()
.filter(condition1)
.filter(condition2)
.map(OrderDTO::getId)
.filter(Objects::nonNull)
.collect(Collectors.toList());
No.3 组合方法模式
优点:模块化和可重用
assemblyUserInfo(req);
assemblyOrderDTO(req);
assemblyOrderItemDTOs(req);
assemblyExtendFields(req);
No.4 异常处理
抛出异常很容易,处理它们很困难
减少异常处理造成的最佳方法是减少处理异常类型的数量,最佳方法是无错误
以 String.substring 方法为例
No.5 Java8 Stream 中的 map()函数和 peek()函数
map()函数:将流中的每个元素都映射为另一个不同的值(应用于流的每一个元素)
peek()函数:对流中的元素进行某种形式的强化或者调试
No.6 Reduce Nesting, Reduce Complexity
尽量让条件语句块短小
卫语句
【信息由网络或者个人提供,如有涉及版权请联系COOY资源网邮箱处理】
© 版权声明
本平台(www.cooy.cn)的一切软件、教程及内容信息仅限用于学习和研究,付费仅为收集整理归类费用;
不得将上述内容用于商业或者非法用途,否则一切后果用户自行承担负责。本平台资源、内容、信息均来自来自用户上传,版权争议及其他问题与本平台无关。
您必须在下载后的24个小时之内从您的电脑或手机中彻底删除上述下载内容,如果您喜欢该程序或内容,请支持正版以获取更好的服务。我们非常重视版权问题,如有侵权请发送邮件至下方邮件(655465@qq.com),敬请谅解!
如发现违法违规内容,请联系下方邮箱举报,我们收到后将会第一时间处理。
THE END
暂无评论内容