开发者

what is the standard guideline to declare the "==" condition? [duplicate]

开发者 https://www.devze.com 2023-03-26 23:58 出处:网络
This question already has answers here: Closed 11 years ago. Possible Duplicate: What is the difference between these (bCondition == NULL) and (NULL==bCondition)?
This question already has answers here: Closed 11 years ago.

Possible Duplicate:

What is the difference between these (bCondition == NULL) and (NULL==bCondition)?

please see the below code:-

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

one of my friends says that this is not a good way to write the code as its not per guidelines, however he dont have any reason to it. Is there is a chance of exceptio开发者_高级运维n with above code or accidental modification?? According to him the better way would have been

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

please let me know which is a better way and why??? Do provide links if u have any.


The only reason to write:

5 == variable

instead of

variable == 5

is that in the former case if you incorrectly put an assignment (single =) in place you will get a compile time error because you are trying to overwrite a constant.

However any decent compiler will give you a warning if you do:

if (variable = 5)

so IMHO it's not worth worrying about. I always use the latter if (var == num) form.


However in Java there is a common pattern that is worth using. When testing a string for equality, one should use:

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

instead of:

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

since the latter can trigger a null pointer exception, and the former cannot.


The reversal is preferable in some languages like C, where

if (x = 5) {
   ...
}

would accidentally assign x to the value 5 if you mistype = instead of ==. By reversing the two arguments the compiler would rightfully object to you reassigning the value 5.

Unlike C/C++, for languages such as Java it's not such an issue since

if (x = 5) {
   ...
}

isn't a valid statement. I still follow the above practise however. I don't have to rethink when swapping between Java and C/C++.


Both are same. select which ever you find more readable.. I would go with first


For that specific case, it's technically safer to do 5 == variable because then if you accidentally say 5 = variable the compiler will complain. On the other hand, variable = 5 is perfectly legal.


This convention is to prevent you from accidentally writing if (myVariable=5) when you mean if (myVariable==5).


For ==, it doesn't matter a bit what order you do it in.

Your friend mentioned "guidelines"-- perhaps it's a business rule? Albeit an arbitrary and semi-pointless one...


It's immaterial. I prefer the first one, because it's more readable.

I hope you're aware that using == is not always correct for reference types. In those cases you should prefer equals. THEN it matters, because you want to avoid null pointer exceptions. It's best to dereference the instance that cannot be null in that case.


There is no such guildline I found. First approach should be followed because it is more readable.


i think if you what to know if they are equals it's fine then. but if you want to know about string, then i more appropriated use '.equals'.

e.g:

object.equals("something");


The only thing I can think of is to avoid possible syntax errors of the kind constant = expression, or to avoid mangled operator overload in C++. In Java both expressions are syntatically valid and picking one over the other is a matter of choice.

0

精彩评论

暂无评论...
验证码 换一张
取 消