それぞれにメリットがあり、違いを理解していますが、ベスト/標準的なプラクティスとは何ですか?なぜ?
例えば :
"myString".equals(myStringVar)
しかしながら
myStringVar.equals("myString")
Javaで使用する標準と見なされているのはどのバリエーションですか。なぜですか。
これは古いC(またはC++)でプログラミングするときに使用された安全対策に起因していると思います。 Cでは、等しいかどうかをテストするときに誤って値を割り当てる可能性があります。
if (x = 3)
Xが3に等しいことをテストするのではなく、代入xの値が3であるため、この条件は常にtrueになります。この微妙なバグを回避するために、開発者は条件を逆にし始めました。
if (3 = x)
これには同じ「バグ」が含まれていますが、コンパイラエラーが生成されるため、より安全です。
より最近の言語にはこの問題はなく、このようなことを行おうとすると簡単に警告することができます。そのため、それはあまり純粋な好みではないので、1つを選択して、それを一貫して使用します。
標準的で良い習慣は、あなたが働いている組織の文化によって異なります
.NETでの標準は_myStringVar == "myString"
_です。これは、私たちが同意したからです。つまり、クリーンで簡潔であると信じています。
注:これは、Javaには適用されません。_==
_がオブジェクト自体ではなく参照を比較するためです。In Java = myStringVar.equals("myString")
を使用する必要があります。
それは変数のnullnessのセマンティクスに依存するという点であなたは正しいと思います。 nullであると予想せず、チェックして処理する必要がない場合は、最初のフォームの方がきれいです。
そうは言っても、文字列リテラルを埋め込むのではなく、より良いオプションはおそらくこれです:
private final String MY_STRING = "myString";
if(MY_STRING).equals(myStringVar);
特に、複数の場所で文字列を使用する可能性がある場合。