为什么我会在if / else语句中使用else子句?

时间:2014-06-20 10:07:08

标签: php syntax

我编写了一个页面,需要在URL中加载唯一的哈希值才能加载。出于参考考虑,我的代码看起来像这样:

<?php
if (!isset($_GET['hash'])) {
    mysql_close();
    header("Location: error.php");
    exit();
}
?>

我的问题是:如果if语句在失败时会重定向,我应该(更重要的是,我为什么要这样)继续我的代码:

else {
    // More Code
}

与以下相反:

// More Code

这只是一个良好的编码实践案例,还是有其背后的原因?是否存在没有else的情况下继续在一个内部进行编码会产生不同结果的情况(除了它们之间明显的else if {}条款之外?

我已经在PHP写了我的代码,但据我所知,这也适用于更多语言。

3 个答案:

答案 0 :(得分:3)

我认为你不应该这样做。如果你在之后的代码中继续这样做,那么一切都将比以前缩进1级。

如果您继续执行此操作,添加其他语句并进一步缩进代码,则代码的可读性将受到影响,导致arrow code

我喜欢创建像你一样的东西,因为它使代码保持平整,更易于阅读。甚至还有一种描述您正在做的事情的模式:Guard Clauses / Statements

当你有许多奇怪的回报,ifs,循环等等时,他们可能会导致复杂的情况。但在大多数案例中,它们使一切变得更容易,更清晰,更易于阅读。

答案 1 :(得分:0)

拥有else语句只是一种很好的编码实践。它不会改变你的代码正在做什么,因为你用“退出”结束你的“if”。

答案 2 :(得分:0)

你应该尽可能避免使用exit(); ,break();以及其他像goto这样使你的程序跳转指令的功能。

为什么?程序员习惯于使用if,else if读取代码......它更直观和结构化。如果读取代码的方式不常见,读者必须考虑在exit()之后继续读取的位置; ,break()或转到..