20

関数に次のコードがあります。

if ($route !== null) { // a route was found
    $route->dispatch();
} else {
    // show 404 page
    $this->showErrorPage(404);
}

今PHPmdはエラーを出します:

メソッド run は、else 式を使用します。Else は決して必要ではなく、コードを単純化して他なしで動作するようにすることができます。

今、else を避けて if 部分に return ステートメントを追加するほうが本当に良いコードになるのだろうかと思っています。

4

5 に答える 5

6

通常、if のみを使用するように式を書き直すことができ、主観的にコードが読みやすくなります。

たとえば、showErrorPage によってコードの実行が中断された場合、このコードは同じように動作します。

if ($route == null) { 

   $this->showErrorPage(404);
} 
$route->dispatch();

if ステートメントの内容が実行を中断しない場合は、リターンを追加できます

if ($route == null) { 

   $this->showErrorPage(404);
   return;
} 
$route->dispatch();

ループ内の場合は、続行を使用してその反復をスキップできます

    foreach ($things as $thing ) {
        if ($thing == null) {
            //do stuff and skip loop iteration
            continue;
        }     

        //Things written from this point on act as "else"

    }
于 2018-12-28T18:30:12.807 に答える
1

少なくともこの場合は、PHPmd の言うことは気にしません。

(彼らの意見では)「よりクリーン」であるため、おそらく条件演算子を使用することを意味していました。

$route !== null  ?  $route->dispatch() : $this->showErrorPage(404) ;
于 2015-09-20T07:58:00.147 に答える