我与另一位程序员在如何编写具有大量错误检查的方法方面存在分歧:
public void performAction() {
if (test1) {
if (test2) {
if (test3) {
// DO STUFF
} else {
return "error 3";
}
} else {
return "error 2";
}
} else {
return "error 1";
}
}
-
public void performAction() {
if (!test1) {
return "error 1";
}
if (!test2) {
return "error 1";
}
if (!test3) {
return "error 1";
}
// DO STUFF
}
对我来说, if语句的深度嵌套使得第一个示例难以阅读。
第二个,尽管有三个return ,但更具可读性。
我好奇地检查了 Code Complete 是怎么说的,这让我不太确定如何处理这个问题:
嵌套底部的错误条件堆栈是编写良好的错误处理代码的标志。
但是之后
在四个 if 语句中缩进例程的主体在美学上是丑陋的,尤其是在最里面的 if 语句中有很多代码的情况下。
并考虑使用保护子句,如第二个示例
尽量减少每个例程中的返回次数。当您在底部阅读例程时,您没有意识到它可能会返回到上面的某个位置时,就更难理解例程了。
您如何编写方法的错误检查部分以使其可读且容易出错?