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

私はそれを考え出し、それを行う良い方法を見つけました。基本的には、基本的な条件ごとにメソッドを作成し、ビットごとの AND 演算子 (&) を使用して if ステートメントでそれらを呼び出します。 -回路。

/**
 * 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 に答える
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;}
}

これは、first が満たされない場合にのみ機能する場合、second としてより多くのパワーを提供します。要件に基づいて選択する必要があります。ただし、ネストされたループが避けられない場合があります。

于 2012-09-23T11:21:51.010 に答える