1

CFScript でreturnとステートメントを同じ意味で使用することについて、ご意見をお聞かせください。else私は通常、次の構文を使用します。

if (something) {
  // Do something
}
else {
  // Do something else
}

最近、代わりにこれを行うことができると思いました:

if (something) {
  // Do something
  return;
}
// Do something else

これら 2 つのスタイルでは、異なる最終結果が得られるでしょうか? elseステートメントでコードをラップする必要がないのが好きです。私の考えでは、ifステートメントが true と評価されて返された場合、その下のコードは実行されません。true と評価されない場合は、elseステートメントでラップされているかどうかに関係なく、その下のコードが実行されます。

そうですか?

4

2 に答える 2

4

Coldfusion は、ほとんどの言語と同様に、同じことを達成するためのさまざまな方法を提供します。プログラマーの仕事は、状況に応じて正しいものを選択することです。もちろん、「正しい」には多くの解釈がありますが、正しい方法は明確で、簡潔で、拡張可能であると言えます。

この場合、実際のパフォーマンスや「コード行数」の違いはありません。コードの完全に異なるブランチに return を使用することは私の目には明確ではありませんが、初期の return スタイルを使用して無効な条件のために関数から抜け出すことは (これも IMO) より明確です。次のケースを考慮してください。

if (not isdefined("url.param1")) {
  return;
}
if (not len(url.param1)) {
  return;
}
if (not refind("[0-9]+", url.param1)) {
  return;
}
doSomethingToValid(url.param1);

if (isdefined("url.param1")) {
  if (len(url.param1)) {
    if (refind("[0-9]+", url.param1)) {
      doSomethingToValid(url.param1);
    }
  }
}

最初のケースでは、リストに適用されるすべての検証を確認でき、事前にすべてを取得できるため、ルーチンの実際の内容に集中できます。2 番目のケースでは、ルーチンの重要な部分を ifs のネストされたセクションの奥深くに埋め込んでしまい、検証に別のルールを追加する必要がある場合は、コード構造がさらに複雑になります。

于 2011-01-07T20:31:36.177 に答える
2

2 つの書き方で同じ結果が返されますが、読みやすさのために最初の方法が優先されます。

于 2011-01-07T19:49:50.327 に答える