1

I have a doubt regarding coding standard of a null check. I want to know the difference between

if(a!=null)

and

if(null!=a)

which one is better,which one to use and why?

4

6 に答える 6

8

違いはありません。しかし、最初のものがより一般的です。2つ目は、その不自然な「文法」から「ヨーダ記法」とも呼ばれます。

かつて私がコーディングガイドラインを使用するプロジェクトで働いていたif (null != a)とき、開発者は定数値が常に最初に来なければならないことを理解しやすいと考えていました(のようにCONSTANT_VALUE.equals(variable)。それは私にとってかなり迷惑でした。

于 2013-03-20T08:54:22.643 に答える
8

if の中に入れることができるのはブール式だけなので、Java ではどちらも同じです。これはプログラマーによるコーディング スタイルの好みに過ぎず、ほとんどのプログラマーはnull != a.

これnull != aは、Java や C++ などのプログラミング言語 ( Yoda Conditionsと呼ばれる) の古い慣習です。誤っ て に書き込んでも有効なため、最初に書き込んでおくことが、このような事故を未然に防ぐためのガードになります
if (a = null)nullanull

于 2013-03-20T08:57:23.327 に答える
2

どちらも同じです。コーディングスタイルによって異なります。

于 2013-03-20T08:54:30.287 に答える
1

コンパイラの観点からは、これらはまったく同じです。ただし、最初の形式の方が読みやすいので、それを使用することをお勧めします。

于 2013-03-20T08:58:07.510 に答える
1

ステートメントが式の結果に基づいて機能する場合、それらの間に違いはありません。したがって、uは、trueまたはfalseのいずれかを書き込むかif(a!=null)if(null!=a)trueまたはfalseを生成し、結果が評価されます。

だからあなたが好きなものを書くことは重要ではありません

于 2013-03-20T09:01:26.773 に答える
1

どちらも同じです。最初のバリアントは一般的ですが、最初の変数が null でないことがわかっている場合は、2 番目のバリアントが役立ちます

"some value".equals(your_variable)、一部の値は、null ではないことがわかっている任意の値にすることができます。これにより、 が の場合に NPE が回避されyour_variableますnull

String str = "somevalue"; 

if(str != null && str.equals("somevalue")) { }

if("somevalue".equals(str)) { }

strある場合とない場合の両方の条件は同じになりますnull

于 2013-03-20T09:02:55.860 に答える