2

我检查了其他一些问题,但它们并没有真正给我期望的答案。

我的代码是这样的..

private function handle()
{
    if()
    {
        if(!condition)
        {
            if(!condition)
            {
                if(!condition)
                {
                    if(!condition))
                    {
                        if(!condition)
                        {
                            if(!condition)
                            {
                                if(!condition)
                                {
                                    if(!condition)
                                    {
                                        if(!condition)
                                        {
                                            code
                                        }

                                        return;
                                    }

                                    return;
                                }

                                return;
                            }

                            return;
                        }

                        return;
                    }

                    return;
                }

                return;
            }


            return;
        }

        return;
    }
}

在我看来,它可读但很混乱,遗憾的是我还没有找到真正让它看起来“漂亮”的方法。有任何想法吗?

编辑:每个回报都是不同的。EDIT2:给出我自己的答案,谢谢大家!

4

4 回答 4

3

条件可以由&&运算符合并。它从左到右工作,这意味着,一旦从左开始的任何一个失败,它就会停止评估条件。

if($a) {

    if($b) {
    }

}

可以替换为

if($a && $b) {
}
于 2012-09-23T11:08:39.137 回答
0

使用变量检查,或将条件组合成更少的 IF 语句。

变量检查如下:

$execute = TRUE;
// Opposite of what you want, e.g. if you want $a only to be TRUE, do $a !== TRUE
if (condition) {
  $execute = FALSE;
}

...
// If all the conditions were met, then everything is OK
if($execute === TRUE) {
  // code
}else {
  // return
}

编辑:如果您想对返回的内容进行更多控制,则变量检查可以更好地组合 IF 语句,例如,如果某个条件失败,则会发生特定的事情,而组合条件并不总是允许的。

于 2012-09-23T11:13:22.210 回答
0

就像已经发布的使用

if(condition1&&condition2){}

或者如果这不起作用,您还可以使用在条件为真时立即停止的功能

function some(){
if(!conditon 1){return 0;}
if(condition 2) {return 1;}
}

如果仅在第一个不满足的情况下才有效,则第二个提供更多的功能。您必须根据自己的要求进行选择。有时尽管嵌套循环是不可避免的。

于 2012-09-23T11:21:51.010 回答
0

我想了想,找到了一个很好的方法,基本上我会为每个基本条件创建一个方法,我会在 if 语句中使用按位 AND 运算符 (&) 调用它们,它不短-电路。

/**
 * nonsql_condition - It means it doesn't check with the database
 *
 * sql_condition - It means it does check with the database.
 */
if(!$this->nonsql_condition() & !$this->nonsql_condition() & !$this->nonsql_condition() & !$this->nonsql_condition())
{
    if(!$this->sql_condition())
    {
       return error;
    }

    if(!$this->sql_condition())
    {
       return error;
    }

    code;
}

这使我可以在我的方法中使用更少的代码行,而且也不会对我的数据库进行不必要的查询。

于 2012-09-23T11:23:53.990 回答