是否可以
包含中断或退出命令以防止进一步的代码执行,或者这是糟糕的编程?
function index()
{
$error = NULL;
if ($_POST){
// validate form
if ($form_validated) {
echo 'this content only';
exit; // or return IS THIS BAD???
} else {
$error = 'form failed';
}
}
echo 'normal page on initial load';
if ($error) { echo '<br />'.$error; }
}
可以使用 exit
阻止进一步的代码执行。
话虽如此,在这个特定的例子中,这是否是最好的方法值得商榷。发出重定向时通常使用 exit
:
header('Location: /foo');
exit;
在您的情况下,似乎不需要立即停止程序执行。您应该构建程序流,使其始终完成,但结果不同。很难遵循可能在中间某处终止的程序逻辑,因此通常最好使用if..else
从函数或分支return
更合乎逻辑的流程。
对于您给出的示例:
function index()
{
...
if ($form_validated) {
echo 'this content only';
exit; // or return IS THIS BAD???
} else {
...
}
这通常被称为提前退出或提前返回(返回更常见)。这可能很好,有些人说早期返回会使代码难以理解,但我想说这在很大程度上取决于函数是否易于阅读和理解。
所以在这里决定它是否不好的人是你。你需要自己找到一些标准来划清界限。例如,如果一个函数很长(超过 12 行代码),并且包含许多早期返回甚至退出,这将使代码更加复杂。
通常,早期返回可以使函数代码变得不那么复杂,这可以大大减少错误的数量。
所以复杂性可能是一个很好的标准。
此外,我建议您非常小心地使用exit
。它一次做很多事情,你通常不应该在你的程序流中需要它。特别是如果你正在编写业务逻辑。