1

代码是这样运行的,随着代码的增加它变得不可读

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

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

4

3 回答 3

0

根据复杂性,您可能会考虑将条件分解为它们自己的功能,然后重组为以下内容:

if (!f1() && !f2() ... ){
    ...
}

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

于 2012-07-23T20:13:40.183 回答
0

这通常使用保护子句而不是嵌套或链接if的 s 来处理:

if (! cond1)
    throw error 1;
if (! cond2)
    throw error 2;

perform action;

请注意,这假定函数实际上在出错时返回,否则这将导致错误行为。但是,这是推荐的。一般来说,不要尝试在遇到错误时恢复操作,尽快将控制权交给应用程序逻辑中的更高级别。

特别是,“打印错误”方面应该几乎(?)总是与实际逻辑脱节——否则你就违反了单一责任原则

因此,当检测到错误条件时,让执行逻辑的函数提前退出,并让其他函数负责打印这些错误。

于 2012-07-23T20:12:02.373 回答
0

如果您使用块来执行真实条件,则更容易理解/调试。这是因为当某事为真时,其条件比某事为真时更为狭窄。

if (cond1){

}else if (cond2){

}else{

}
于 2012-07-23T20:09:07.370 回答