代码运行如此,因为代码增加它变得不可读
if(!cond1){
//print error
}else{
if(!cond2){
// print error
}else{
//code goes on.....
}
}
编写上述代码的替代方法将非常有用
答案 0 :(得分:0)
如果使用块来执行真实条件,则更容易理解/调试。这是因为某些事情是真的是一个比不的事情更窄的条件。
if (cond1){
}else if (cond2){
}else{
}
答案 1 :(得分:0)
通常使用guard clauses处理,而不是嵌套或链接if
:
if (! cond1)
throw error 1;
if (! cond2)
throw error 2;
perform action;
请注意,这假设函数实际在出错时返回,否则会导致错误行为。但是,这是推荐。一般情况下,不要尝试在遇到错误时恢复操作,尽快将控制权提高到应用程序逻辑中的更高级别。
特别是,“打印错误”方面几乎应该(?)总是与实际逻辑断开连接 - 否则你违反了single responsibility principle。
因此,当检测到错误条件时,让逻辑执行功能提前退出,让其他功能负责打印这些错误。
答案 2 :(得分:0)
根据复杂程度,您可能会考虑将条件分解为自己的功能,并重组为以下内容:
if (!f1() && !f2() ... ){
...
}
然后让每个条件的函数处理该特定错误,而不是使顶级函数混乱。