一坨代码的痛定思痛,我的眼睛真的近视 。(反思三)
优化前的代码:
/**
* 获取界面传递的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;
}
}

浙公网安备 33010602011771号