嵌套if语句好还是坏?

时间:2012-06-26 00:38:52

标签: php if-statement

我有一个投票系统,允许用户投票。现在我通过首先检查用户是否已登录然后检查他们是否已经投票来做到这一点。我想知道是否有更好的方法这样做,因为我被告知嵌套的if语句是要避免的。

我的代码:

if ($loggedIn) {
    if($row['voted']){
        You Already voted
    }else{
        <a href="#">Agree</a>
    }
}else{
    Please Register
}

4 个答案:

答案 0 :(得分:5)

嵌套if( ... ){ ... }else{ ... }语句很好,只要它们合乎逻辑且易于阅读/维护。另一个选择是检查你的参数的逻辑,看看它们是否可以用更简单的方式表达。

例如,您提供的代码可以表示为:

if( !$loggedIn ){
  echo 'Please Register';
}elseif( $row['voted'] ){
  echo 'You Already voted';
}else{
  echo '<a href="#">Agree</a>';
}

答案 1 :(得分:1)

这不是那么简单。你的例子很简单,但其他情况则不然。在您的示例中,如果语句可以正常使用,则可以很容易地跟踪正在进行的嵌套操作。在更复杂的代码中,深度嵌套的语句会导致难以维护的代码。正如许多事情编程一样,情况会因情况而异,你需要根据具体情况来决定。

答案 2 :(得分:0)

总的来说,没关系。您希望避免使用过于复杂的嵌套if语句

答案 3 :(得分:0)

在这种情况下它很好,事实上在大多数情况下它是。问题只发生在许多嵌套很多的情况下,因此它很难读,你可能会忘记一些东西,但这是可读性的,使用嵌套的if语句的逻辑没有错。