微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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;
}

这使得它明确地清楚了逻辑序列是什么.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐