1

それ以上のコードの実行を防ぐためにブレークまたは終了コマンドを含めることは問題ありませんか、それともこれは不適切なプログラミングですか?

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; }
}
4

2 に答える 2

1

を使用してそれ以上のコードが実行されないようにすることは問題ありませんexit

そうは言っても、これがこの特定の例でそれを行うための最良の方法であるかどうかは議論の余地があります。exitリダイレクトを発行するときに使用するのが一般的です。

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

あなたの場合、実行中にプログラムの実行をすぐに停止する必要はないようです。プログラムフローを構造化して、常に完了するようにする必要がありますが、結果は異なります。途中で終了する可能性のあるプログラムロジックを追跡するのは難しいため、通常は、return関数またはブランチからのより論理的なフローを使用することをお勧めします。if..else

于 2012-04-11T01:41:44.217 に答える
1

あなたが与える例について:

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

これは通常、アーリー エグジットまたはアーリー リターンと呼ばれます(リターンの方が一般的です)。これは非常に問題ありません。早期に戻るとコードが理解しにくくなると言う人もいますが、関数が簡単に読み取れて理解できるかどうかは、さらに多くのことに依存すると思います。

ここで悪いか悪いかを決めるのはあなたです。線を引く基準を自分で見つける必要があります。たとえば、関数が長く (コードが 12 行以上)、これらの早期復帰や終了が多数含まれている場合、コードはより複雑になります。

一般に、早期の返品により関数コードの複雑さが軽減され、バグの数を大幅に減らすことができます。

したがって、ここではおそらく複雑さが適切な基準となります

exitさらに、慎重に使用することをお勧めします。一度に多くのことを行うため、通常、プログラム フロー内では必要ありません。特にビジネスロジックを書いている場合。

于 2012-05-31T10:52:33.317 に答える