一坨代码的痛定思痛,我的眼睛真的近视 。(反思三)

优化前的代码:

   

    /**
     * 获取界面传递的id集合
     * @param idLists
     * @return
     */
    public OrderIdListDTO queryIdList(String idLists) {
        OrderIdListDTO query = new OrderIdListDTO();
        if (null != idLists && StringUtils.isNotBlank(idLists.toString())) {
            String idListStr = idLists;
            if (StringUtils.isNotBlank(idListStr)) {
                // 集合
                String[] temp2 = idListStr.split(",");
                if (StringUtils.isNotBlank(idListStr)) {
                    List<Long> idList = new ArrayList<>();

                    for (int i = 0; i < temp2.length; i++) {
                        String str = temp2[i].substring(0, 1);
                        String str2 = temp2[i].substring(temp2[i].length() - 1);
                        if ("[".equals(str)) {
                            temp2[i] = temp2[i].substring(1, temp2[i].length() - 1);
                            idList.add(Long.valueOf(temp2[i].trim()));
                        } else if ("]".equals(str2)) {
                            temp2[i] = temp2[i].substring(0, temp2[i].length() - 1);
                            idList.add(Long.valueOf(temp2[i].trim()));
                        } else {
                            idList.add(Long.valueOf(temp2[i].trim()));
                        }
                    }
                    query.setIdList(idList);
                }
            }
        }

        return query;
    }

  优化后的代码:

      

/**
 * 获取界面传递的 id 集合
 */
public OrderIdListDTO queryIdList(String idLists) {
    OrderIdListDTO query = new OrderIdListDTO();

    if (StringUtils.isBlank(idLists)) {
        return query;
    }

    // 去掉可能存在的 [ ]
    String cleaned = idLists
            .replace("[", "")
            .replace("]", "")
            .trim();

    if (StringUtils.isBlank(cleaned)) {
        return query;
    }

    List<Long> idList = Arrays.stream(cleaned.split(","))
            .map(String::trim)
            .filter(StringUtils::isNotBlank)
            .map(this::safeParseLong)
            .filter(Objects::nonNull)
            .collect(Collectors.toList());

    query.setIdList(idList);
    return query;
}

/**
 * 安全转换 Long,防止非法数据抛异常
 */
private Long safeParseLong(String value) {
    try {
        return Long.valueOf(value);
    } catch (NumberFormatException e) {
        return null;
    }
}

  

posted @ 2026-01-07 13:13  升鲜宝供应链管理系统  阅读(5)  评论(0)    收藏  举报