2

論理的に違いはありますか

if (name.startsWith("a"){
   return true;
} else if (name.startsWith("b") {
   return true;
} else if (name.startsWith("c") {
   return true;
}

if(name.startsWith("a") || name.startsWith("b") || name.startsWith("c") ){
  return true;
}

私にとってはエレガントなので、2番目のものを好みます。「違いはありますか?」と理解したいのですが。

4

7 に答える 7

7

彼らは同じです。

2 番目の方が間違いなく読みやすく、読みやすさはプログラミングにおいて非常に重要です。

私が従うのが好きなルールは、if-else ステートメントの複数のブランチが同じ動作を生成する場合、それらを組み合わせるというものです。(それらがまったく同じ動作であることを確認してください)

于 2013-07-26T15:00:50.080 に答える
5

この場合:いいえ。

||と を&&使用したブール式は、ショートサーキットを使用します。したがって、最初の選択肢は効率的ではありません。BA || BAtrue

ただし、if 句の本体が大きくなり、同じコードが含まれている場合は、最初のバージョンを絶対に使用したくありません。

if (name.startsWith("a"){
    // lots of code
} else if (name.startsWith("b") {
    // lost of the same code
}

コードの複製はひどい罪であり、多くの場合、厄介なバグの原因となります。

于 2013-07-26T15:05:15.753 に答える
0

それらは同じ意図で機能しますが、最初のものは初心者にとって理解しにくいです。コンピューターでさえ、最初の実行には 2 番目よりも時間がかかります。ただし、この場合は時間の問題はありません:D. 最初のステートメントは次のように実行されます。文字が一致するかどうかがチェックされ、一致する場合は true が返されます。それ以外の場合は同じ手順が 2 回続きます。 :)。楽しみ

于 2013-07-26T15:06:13.433 に答える