4

このようなものnullと比較できることがわかりました。Object

if(null != Object)

Objectと比較するのではなくnull

Object != null

前者のアプローチを使用すると、何が問題になる可能性がありますか?

それは合法ですか?そうでない場合、なぜコンパイラはそれを受け入れるのですか?

4

6 に答える 6

14

どちらも同等ですが、オブジェクトに null をnull != object書き込んで誤って代入することが有効な言語の古い慣行です。if (object = null)この事故を未然に防ぐガードです。

于 2012-04-20T10:49:54.097 に答える
6

ほとんどの人はObject != null、慣れているので読みやすいと言っています。

私が聞いた最良の議論null != objectは、悪い表現を避けることです。たとえば、タイプミスを拾うif (var == 1)

if (var = 1) // this is valid C
if (1 = var) // this is not valid C
于 2012-04-20T10:48:26.953 に答える
6

それには 1 つの問題があります - 読みやすさです。きれいなコードを書きたい場合は、将来それがどのように読み取られるかを気にする必要があります。それが何をするのか、なぜ特定のことをするのかを明確にする必要があります。「オブジェクト」を評価の右側に配置すると、実際に何をしているかがわかりにくくなります。まあ、少なくとも私の意見では...

于 2012-04-20T10:49:33.537 に答える
2

あくまでも読みやすさの問題です。コードを声に出して読むことができ、それが理にかなっている場合は、理解しやすくなります。2番目のバージョンはヨーダトークのような..「null is not the object..」と「The object is not null」..

これは、変数とメソッドに適切な名前を付ける場合にも当てはまります。

読みやすいコードを書くための参考サイト: http://www.cleancoders.com/

于 2012-04-20T10:51:00.063 に答える
0

この!=演算子は、等価演算子のテストと同じように動作し==ます。

式の副作用を無視すると、( expr1 != expr2) と ( expr2 != expr1) はまったく同じです。

Objectが変数 (または定数) の場合、 ( )null != Objectも同じように有効です (ただし、少し読みにくくなります)。

于 2012-04-20T10:49:16.357 に答える
0

同じです。if と言っているようなものです1 != 2。これは意味し2 != 1ますか?

于 2012-04-20T10:45:07.210 に答える