2012-04-11 12 views
1

さらなるコードの実行を妨げるためにbreakコマンドまたはexitコマンドを含めても問題ないですか?PHP終了、戻り値および適切なプログラミング標準

function index() 
{ 
    $error = NULL; 

    if ($_POST){ 

    // validate form 
    if ($form_validated) { 
     echo 'this content only'; 
     exit; // or return   IS THIS BAD??? 
    } else { 
     $error = 'form failed'; 
    } 
} 
    echo 'normal page on initial load'; 
    if ($error) { echo '<br />'.$error; } 
} 

答えて

1

exitを使用してさらにコードを実行しないようにしても問題ありません。

これは、この特定の例でこれを行う最良の方法であるかどうかは議論の余地があります。リダイレクトを発行する際にexitを使用することが一般的である:あなたのケースでは

header('Location: /foo'); 
exit; 

、半ば実行中のプログラムの実行を停止する即時の必要性があるとは思えません。プログラムのフローは、常に完了するように構造化する必要がありますが、結果は異なります。途中で終了するプログラムロジックに従うのは難しいので、通常、if..elseを使用して関数またはブランチからのより論理的なフローが好ましいです。あなたが与える例えば

1

function index() 
{ 
    ... 
    if ($form_validated) { 
     echo 'this content only'; 
     exit; // or return   IS THIS BAD??? 
    } else { 
    ... 
} 

は、これは通常、早期終了または早期復帰(リターンがより一般的である)と呼ばれています。これは非常に大丈夫かもしれませんが、初期のリターンはコードを理解しにくいと言う人もいますが、関数を簡単に読み込み、理解できるかどうかは、もっと多くのことに依存しています。

ここでは、悪いかどうかを決定する人はあなたです。あなたは線を描く場所をあなた自身で見つける必要があります。例えば、関数が長い(12行以上のコード)場合、これらの早期リターンまたは出口の多くが含まれていると、コードが複雑になります。

一般的に早期リターンは機能コードの複雑さを緩和し、バグの数を大幅に減らすことができます。

おそらくcomplexity is a good criteria hereです。

また、exitを使用することをお勧めします。これは一度に多くのことを行い、通常はプログラムの流れの中でそれを必要としません。特にビジネスロジックを記述している場合。