2011-08-08 17 views
1

可能性の重複:
What is the difference between these (bCondition == NULL) and (NULL==bCondition)?"=="条件を宣言するための標準ガイドラインは何ですか?

以下のコードを参照してください。 - 私の友人の

if(myVariable==5) 
    { 
    //some logic 
    } 

1を、これはコードを書くための良い方法ではないことを言いますそのガイドラインではなく、しかし、彼はそれに何らかの理由がありません。上記のコードや偶発的な変更で例外が発生する可能性はありますか?彼によれば、より良い方法があったでしょう

if(5==myVariable) 
     { 
     //some logic 
     } 

私はどちらが良い方法であり、なぜですか?あなたが持っているならリンクを提供してください。 ==については

+0

いずれの方法も有効ですが、私は前者が99%の時間を使用しているのを見ました。 – ssell

+1

基本的には、この記事のすべての答えは一つのことを言っています:両方のステートメントは同じですが、読みやすいものに固執してください。最も一般的で使用されているのは、if(variable == 5)です。これはまた、より読みやすくなります(あなたは何を検討しているのかを確認できます)。 Btw、両方の方法が正しいです。 –

+2

彼らは[ヨーダ条件](http://stackoverflow.com/questions/2349378/new-programming-jargon-you-coined/2430307#2430307)と呼ばれ、愚かと見なされます。 –

答えて

10

書くための唯一の理由:

5 == variable 

代わりの

variable == 5 

あなたは間違って所定の位置に割り当て(シングル=)を置けば前者の場合には、あなたが取得することです定数を上書きしようとしているためコンパイル時エラーが発生します。

あなたがしなければしかし、まともなコンパイラはあなたに警告を与える:

if (variable = 5) 

ので私見それは気にせ価値はありません。 I 常には、後者のif (var == num)形式を使用します。

Javaでしかし

が使用する価値ある一般的なパターンです。等価の文字列をテストする場合、一つは使用する必要があります

if ("constant".equals(variable)) { ... } 

代わりに:

if (variable.equals("constant")) { ... } 

後者がNULLポインタ例外をトリガすることができ、前者はできないので。

+3

+1は 'まともなコンパイラはあなたに警告を与えるだろう' – Nawaz

+0

+1は徹底的に "とまともなコンパイラは警告を与える"。 –

1

、あなたがそれを何順序少し問題ではありません

あなたの友人は「ガイドライン」に述べた - 。おそらくそれは、ビジネスルールのですが?しかし、無意味なものでも...

2

どちらも同じです。あなたがもっと読むことができるものを選んでください。私は最初に行くでしょう

1

それは重要ではありません。私は最初の方が好きです。もっと読みやすいからです。

==を使用していると、参照タイプが必ずしも正しいとは限りません。そのような場合は、equalsを選択する必要があります。あなたがヌルポインタ例外を避けたいので、それは重要です。その場合、nullにできないインスタンスを逆参照することが最善です。

4

逆転は

if (x = 5) { 
    ... 
} 

でしょうが誤った値5から割り当てxがあなたの代わりに===の入力を間違えた場合はC、のようないくつかの言語で好ましいです。

if (x = 5) { 
    ... 
} 

は有効な文ではありませんので、二つの引数を逆にすることによって、コンパイラは当然あなたが値C/C++とは異なり5.

に再割り当てに反対するだろう、Javaなどの言語のために、そのような問題ではありません。私はまだ上記の習慣に従っています。私はJavaとC/C++の間で交換する際には考え直す必要はありません。その具体的なケースについては

+0

ブール式ではJavaではそれほど問題にはなりません。私がJava仕様に正しく従えば、 'boolean b = ...; if(b = true) 'が有効なコード(C#、btwと同じ)です。 –

2

、それは技術的に誤っ5 = variableコンパイラが文句を言うだろうと言うならば、ため5 == variableを行うことが安全です。一方、variable = 5は完全に合法です。

+0

私は '5!= variable'と書くときに' 5 == variable'と書くのを止めません。 –

+0

だからこそ私は技術的に言っています*あなたが対処しなければならないケースが1つ少ないからです。あなたの議論は、 '変数!= 5'にも当てはまります。いずれにしても、このようなことを心配するのは、私の意見では、少し編集的に思える。 – Jeremy

2

この規約は、if (myVariable==5)を意味するときに、誤ってif (myVariable=5)と書くのを防ぐためのものです。

0

私が見つけたようなギルドラインはありません。 より読みやすいので、最初にアプローチする必要があります。

0

もしあなたがそれが大丈夫かどうかを知っていればいいと思います。 しかし、文字列について知りたいのであれば、私はもっと「充実した」.equalsを使っています。

例えば:

object.equals("something"); 
+0

または好ましくは '' something '.equals(object) 'です。これは' .equals() 'の右辺に定数を入れる方が良い場合の1つです。 – Alnitak

0

私は考えることができる唯一のことは、一種constant = expressionの可能な構文エラーを回避するために、またはC++でのマングルされた演算子オーバーロードを避けるためです。 Javaでは、両方の式が構文的に有効であり、一方を選択することは選択の問題です。

関連する問題