美文网首页
Code Health

Code Health

作者: Tinyspot | 来源:发表于2024-08-05 21:33 被阅读0次

    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<String> 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

    尽量让条件语句块短小
    卫语句

    相关文章

      网友评论

          本文标题:Code Health

          本文链接:https://www.haomeiwen.com/subject/shbxkjtx.html