当显式“;否则”;在控制结构中是必要的


When explicit "else" is necessary in control structures?

应该使用什么?这个,没有其他:

function($condition) {
    if($condition) {
        return true;
    }
    return false;
}

或者这个,其他:

function($condition) {
    if($condition) {
        return true;
    } else {
        return false;
    }
}

潜在的缺点是什么?

注意:我知道这个例子的正确解决方案是

function($condition) {
    return (boolean)$condition;
}

我喜欢这种方法:

function($condition) {
    $retValue = false;
    if($condition) {
        $retValue = true;
    }
    return $retValue;
}

这样你就知道这个函数将返回到哪里(总是在最后),这对以后的分析很有好处。您可以设置一个默认值,并且只有在条件正确的情况下才能更改它。

有了else,可读性更好。但是,当函数被返回函数终止时,这两个函数都在执行相同的操作。我发现使用else也更安全,如果在某些情况下你可以忘记使用return函数,然后再返回false。

我也会使用else,原因如下:

  1. 您的代码可读性更好
  2. 在复杂的代码中,就像在其他if/else中使用if/elses一样,调试会容易得多

在某些情况下,可以通过设置"else"来提高可读性。下面两个例子是等价的。第二个生成的代码更少,尽管只有当我们在该块中返回值而不进行复杂计算时,它才适用,但同样,我们可以利用函数使其可用。

function($a, $b) {
    if($a) {
        if($a > $b) {
            return true;
        } else {
            return false;
        }
    } else {
        return false;
    }
}
function($a, $b) {
    if($a) {
        if($a > $b) {
            return true;
        }
    }
    return false;
}

注意:如果不谈论具有更复杂条件假设的一般情况,这个应该折叠为:

function($a, $b) {
    return ($a and $a > $b);
}

在第一个语句中,将返回true和false,因为当if语句完成时,它将执行下一件事,返回false。在第二个例子中,将根据条件返回一个true或false。第一种方法的缺点是返回true和false,这可能会混淆只要求一个参数而接收两个参数的函数。这是假设您将其包含在一个更大的函数中。我不知道你为什么要用第一个。希望这能有所帮助!