如果有其他条件,更好的写作方式

时间:2012-07-23 20:04:20

标签: coding-style

代码运行如此,因为代码增加它变得不可读

if(!cond1){
    //print error
}else{
        if(!cond2){
          // print error
        }else{
               //code goes on.....
             }
     }

编写上述代码的替代方法将非常有用

3 个答案:

答案 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() ... ){
    ...
}

然后让每个条件的函数处理该特定错误,而不是使顶级函数混乱。