重複の可能性:
等しいかどうかを確認する方法は?(0 == i)または(i == 0)
i==0と0==iの間に違いはありますか?
私は人々がの代わりにif(condition)
asを使用することを何度も見ました。それは良い習慣だと言われていますが、誰かがその理由を説明できますか?どんな違いがあるの ?むしろ、それは私の意見では読みやすさを低下させます。if(0==x)
if(x==0)
重複の可能性:
等しいかどうかを確認する方法は?(0 == i)または(i == 0)
i==0と0==iの間に違いはありますか?
私は人々がの代わりにif(condition)
asを使用することを何度も見ました。それは良い習慣だと言われていますが、誰かがその理由を説明できますか?どんな違いがあるの ?むしろ、それは私の意見では読みやすさを低下させます。if(0==x)
if(x==0)
読みやすさが低下するという事実は、純粋に主観的なものです。x==0
(私も同じように感じますが、それは私が他の方法よりも多くのことを扱ってきたので、それに慣れたからです)。
偶発的な割り当てを防ぐために行われます。
if(0=x)
コンパイラエラーが発生します、
if(x=0)
しません。
個人的には、私はこの習慣を好みません。しかし、人気が出た理由は次のとおりです。
assignment operator
とブール条件を区別します。
if(x = 0)
この行には、次の 2 つの目的があります。
false
ようにします。if(0)
if(0 = x)
これらの間違いを避けるために、コンパイル時エラーが発生する方を好む人もいます。
if (a = 0)
の代わりに入力する入力ミスを単に回避しますif (a == 0)
。Yoda スタイルを使用すると、 のif (0 = a)
代わりに記述するとコンパイル エラーが発生しますif (0 == a)
。
一方、それは別の変数であるif (b = a)
およびのケースを防止しません。b
銀の弾丸はありません。
-Wall -Wextra
コンパイル時に使用することをお勧めします。-Werror
偏執的になりたい場合は追加し、すべての警告をエラーとして扱います (これを行うことをお勧めします)。
はい、読みにくいです(imho)が、これにより、チェックする代わりに割り当ての一般的な間違いを回避できます==
if( 0 = variable ) { // Fail 0 is constant
豆知識: これを「ヨーダ条件」と呼ぶ人もいます
いいえ、左に変数名、右に定数などを読むのはあなたの習慣です。しかし、実際には、そのままにしておくと正確なコードが得られます
もし (0=x)
それ以外の
if(0==x) が間違っていると、簡単に変更できるエラーがスローされますが、逆の場合はデバッグが非常に困難です