编程语言
首页 > 编程语言> > PHP – 嵌套的IF语句

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