Nest is a Problem
- Nest Code is hard to understand
- 代码的圈复杂度(Cyclomatic complexity)是衡量质量的标准之一。
- 复杂度越高,理解越困难,测试越困难,维护越困难,出错的概率越高,事故风险越高
How to improve
Extraction 抽取
- 抽取为独立的function
- 控制每个function的复杂度
- 化整为零
Inversion 判断反转
- 优先判断中断条件
- 防御式编程
- 层层过滤,核心逻辑后置
public int nestCase(String numbers) {
if (org.springframework.util.StringUtils.hasText(numbers)) {
String[] inputs = numbers.split(",");
int total = 0;
for (String s : inputs) {
try {
int input = Integer.parseInt(s);
total = total + input;
} catch (Exception e) {
log.error("Input is not a valid number");
return 0;
}
}
return total;
} else {
log.error("Input can not be null");
return 0;
}
public int nestCase1(String numbers) {
// Check One
if (!org.springframework.util.StringUtils.hasText(numbers)) {
log.error("Input can not be null");
return 0;
}
// Check Tow
if (!Pattern.matches("^[1-9,]*$", numbers)) {
log.error("Input is not a valid number");
return 0;
}
String[] inputs = numbers.split(",");
// Use Functions
return Arrays.stream(inputs).mapToInt(Integer::parseInt).sum();
}
本文由 Ivan Dong 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Jul 14, 2023 at 08:31 am