私は(i == 0)を好みますが、それでも自分で行う「ルール」(0 == i)を作成し、毎回それを破ります。
「え?」と思います。
さて、左に左辺値を置くという意識的な決定をしている場合は、「==」に「=」と入力すると、入力内容に十分注意を払っています。私は願います。C / C ++では、私は通常、自分のコードに-Wallを使用します。これにより、とにかくほとんどの "=" for"=="エラーに対してgccで警告が生成されます。最近その警告を見たのを覚えていません。おそらく、プログラムを長くするほど、以前に犯したエラーについて反射的にパラノイアになっているからです...
if(DialogResult.OK == MessageBox.Show("Message"))
私には見当違いのようです。トリックのポイントは、誤って何かに割り当てないようにすることです。
しかし、DialogResult.OKがMessageBox.Show( "Message")よりも割り当て可能なタイプに評価される可能性が高いか低いかは誰が言うのでしょうか。Javaでは、メソッド呼び出しを割り当てることはできない可能性がありますが、フィールドは最終的なものではない可能性があります。したがって、= for ==と入力することを心配している場合は、この例のJavaでは実際には逆になっているはずです。C ++では、どちらも、または両方を割り当てることはできません。
(0 == i)は、数値リテラルが割り当て可能ではないことを絶対的に確実に知っているためにのみ役立ちますが、iは割り当て可能である可能性があります。
比較の両側が割り当て可能である場合、この方法で偶発的な割り当てから身を守ることはできません。これは、調べずにどちらが割り当て可能かわからない場合に当てはまります。「直感に反する方法でそれらを配置すれば、安全になる」という魔法のトリックはありません。私の「常にルールを破る」ルールと同じように、この問題に注目が集まっていると思います。