PHP – 嵌套的IF语句
作者:互联网
我想知道何时使用多个嵌套的IF语句是个坏主意.
例如:
function change_password($email, $password, $new_password, $confirm_new_password)
{
if($email && $password && $new_password && $confirm_new_password)
{
if($new_password == $confirm_new_password)
{
if(login($email, $password))
{
if(set_password($email, $new_password))
{
return TRUE;
}
}
}
}
}
这个函数使用如下:
if(!change_password($email, $password, $new_password, $confirm_new_password)
{
echo 'The form was not filled in correctly!';
exit;
}
我把所有的功能称为这样,我想知道我的编码风格是否有问题.我有疑虑,因为如果我遵循这个设计那么这意味着我写的每一个函数都将与IF嵌套,检查每个阶段是否有错误.这是其他人做的吗?
我没有看到很多其他类似的脚本,嵌套的IF形成三角形,只在中间有所需的结果.如果没有达到中间位置,那么就会搞砸了.
这是一个很好的功能结构吗?
解决方法:
嵌套太深通常是一个坏主意 – 这是意大利面条的逻辑,很难遵循.由于您的每个验证步骤都取决于前一阶段的成功,因此根本不要嵌套 – 只需在阶段失败时挽救:
function change_password(blah blah blah) {
if (!$condition1) {
return false;
}
if (!$condition2) {
return false;
}
etc....
// got here, must have succeeded
return true;
}
这使得它明确地清楚了逻辑序列是什么.
标签:nested-if,php 来源: https://codeday.me/bug/20191005/1855781.html