Code Health

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资源网邮箱处理】

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容