6

私はC#.NETを使用して、4人のグループでプロジェクトを行っていました。私は自然に次のようなことを書き留めました if (var_name == "some_text")が、グループメンバーの1人は、その行を変更してif ("some_text" == var_name)、センサープログラマーから学んだ「より良いプログラミング手法だ」と主張しました。私たちのグループの誰も、自分自身でさえも、それがより厄介に感じることを除いて、これの背後にある動機が何であるかを理解していませんでした。これはより良い習慣ですか、それとも単なる都市伝説ですか?

4

4 に答える 4

11

C#ではこれに正当な理由はありません。

Cでは、=記号の1つをうっかり忘れてしまう可能性があり、Cでは次のことが可能になります。

if (x = 5)

これはコンパイルされ、常にtrueまたはfalseのいずれかを返します(変数がゼロ以外の値に設定されている場合はtrue、ゼロの場合はfalse)。これはエラーの一般的な原因でした。したがってif (5 == x)、=記号の1つを省略した場合、Cコンパイラが文句を言うので、これを書くことでこれを防ぐことができます。

ただし、C#では、割り当てをブール条件として扱うことができないため、この間違いを犯すことは不可能であるため、提案は無意味です。より自然な「ifxが5」スタイルに固執することをお勧めします。

于 2012-09-25T20:24:03.863 に答える
6

はい、私はそれの大ファンではありません..しかしあります..誤って=比較の代わりに演算子assign()を使用すると、コンパイルされないか、すぐにクラッシュします。少なくとも「一般的な」プログラミング言語では;-)

このウェブはそれについてもう少し詳しく説明しています-http: //united-coders.com/christian-harms/what-are-yoda-conditions/

于 2012-09-25T20:10:16.220 に答える
2

私は大学で、チェックしようとしている値を誤って割り当てないようにするために最初のC ++クラスを受講したときにそれを始めましたが、それは常に私に従っています。ただし、C#を使用する場合は、次のことを行う傾向があります。

if (var_name.Equals("some_text"))

これは偶発的な割り当てを防ぐだけでなく、視覚的には、Equals()を見る方が==を見るよりもはるかに理解しやすいです。ちょうど私の2セント。

于 2012-09-25T21:07:32.233 に答える
1

大学でプログラミングコースのイントロを取っているときに、それを逆に書くように教えられました。私たちはC++を使用していましたが、他の回答が言ったように、C++には違いがありました。

于 2012-09-27T18:08:23.777 に答える