5

そもそも三項条件演算子が嫌いなら、返信する必要はありません;)

通常、これは次のような代入式と組み合わせて使用​​されます。

var foo = (some_condition) ? then_code : else_code;

ただし、次のような単純なコードを置き換えるために使用したいと思います。

if(some_condition) {
  do_something_simple;
} else {
  do_something_else;
}

代わりに次のようにします。

(some_condition) ? do_something_simple : do_something_else;

私はJavaScriptでこれをやっている可能性があります。上記では未定義を返すため、割り当ては必要ありません。私は節約されたスペースが好きですが、このタイプの使用について人々がどう思うか疑問に思っています。

編集:「意図を隠す」ことをほのめかす回答を見てきました。古典的に式で使用されていますが、式で使用するよりも意図を隠しているのはなぜですか? 特に、至る所で三項演算子の使用が見られる動的言語では?

4

4 に答える 4

3

条件演算子は通常、式 (値を生成する式) で使用する必要があり、'if/then/else' ステートメントの代わりとして使用しないことをお勧めします。たまに使う程度なら特に問題ないです。体系的に使用すると、コードの意図を読者から隠していると思います。

于 2010-11-06T14:23:55.663 に答える
2

これは私の個人的な好みです:

この場合、「コードは機械のためではなく、人が読むために書かれている」という考え方に陥ると思います。ほとんどの人はこのように書いていないのでif then else、混乱を引き起こし、コードを理解する時間が増え、バグが発生する可能性があります.それを削除しましょう。コードのクリーンアップがバグの紹介になります。


引用元: プログラムは人が読めるように書かれるべきであり、マシンが実行するのは偶然に限られます。

-- Abelson と Sussman による "Structure and Interpretation of Computer Programs" より

チャーリー・マーティンは、コードはコンピュータのためのものか、人のためのものか? :

コンピューターが実行しない場合は、壊れています。人々がそれを読むことができない場合、それは壊れます。後で。

コードはマシンが理解できる (そして適切に実行できる) ように書かれており、人間が理解することも重要です。(ただし、コンサルティング料を稼ぐために故意に理解しにくく書かれている場合を除きますが、後でまたは次のプロジェクトのために他の人を雇う可能性があります。または、人々があなたのコードをよく理解できない場合、人々があなたのコードをよく理解できない場合は、雇用を確保するために故意に理解しにくく書かれています。他の人がコードを保守できないのではないかと心配してあなたを解雇してください...物事には2つの側面があるかもしれません...そのようなケースがますます増えています)

于 2010-11-06T14:15:32.047 に答える
0

三項演算子は、成熟した/安定したプログラムには適していますが、絶えず変化する環境には適していません。任意のブランチに追加のコードを追加する必要があるとします。if/then/else 構文を使用すると、はるかに簡単になります。

于 2010-11-06T15:05:40.337 に答える
0

奇妙なことを可能にするJavaScriptについて話しているので、質問はばかげています。

従来のプログラミング言語の三項条件演算子では、両方のケースがステートメントではなく式である必要があります。このように、通常の if/else 分岐としてではなく、ブール条件に従って 2 つの式から選択するために使用できます。

JavaScript のような言語では、ステートメントが実際に値を返すため、この違いはなくなります。そのため、3 進数を使用して、ステートメントによって返された未定義の値を破棄することができます。

他のプログラミング言語に多く存在する私の観点からは、これはスペースを節約する場合にも混乱を招く可能性がありますが、それは好みの問題だと思います。三項演算子のこの種の使用を許可するプログラミング言語はほとんどないため、あまり慣れないでください。

于 2010-11-06T14:23:25.990 に答える