我编写了一个页面,需要在URL中加载唯一的哈希值才能加载。出于参考考虑,我的代码看起来像这样:
<?php
if (!isset($_GET['hash'])) {
mysql_close();
header("Location: error.php");
exit();
}
?>
我的问题是:如果if
语句在失败时会重定向,我应该(更重要的是,我为什么要这样)继续我的代码:
else {
// More Code
}
与以下相反:
// More Code
这只是一个良好的编码实践案例,还是有其背后的原因?是否存在没有else
的情况下继续在一个内部进行编码会产生不同结果的情况(除了它们之间明显的else if {}
条款之外?
我已经在PHP
写了我的代码,但据我所知,这也适用于更多语言。
答案 0 :(得分:3)
我认为你不应该这样做。如果你在之后的代码中继续这样做,那么一切都将比以前缩进1级。
如果您继续执行此操作,添加其他语句并进一步缩进代码,则代码的可读性将受到影响,导致arrow code。
我喜欢创建像你一样的东西,因为它使代码保持平整,更易于阅读。甚至还有一种描述您正在做的事情的模式:Guard Clauses / Statements
。
当你有许多奇怪的回报,ifs,循环等等时,他们可能会导致复杂的情况。但在大多数案例中,它们使一切变得更容易,更清晰,更易于阅读。
答案 1 :(得分:0)
拥有else语句只是一种很好的编码实践。它不会改变你的代码正在做什么,因为你用“退出”结束你的“if”。
答案 2 :(得分:0)
你应该尽可能避免使用exit(); ,break();以及其他像goto这样使你的程序跳转指令的功能。
为什么?程序员习惯于使用if,else if读取代码......它更直观和结构化。如果读取代码的方式不常见,读者必须考虑在exit()之后继续读取的位置; ,break()或转到..