I just found out that I can compare null
with an Object
like this,
if(null != Object)
Rather than comparing Object
with null
, like
Object != null
What may go wrong if use the former approach?
Is that legal? If not then why does compiler accept it?
There's one thing wrong about it - readability. If you want to write a clean code, you should care about the way it will be read in the future. It needs to be obvious, what it does and why it does a certain thing. If you place the "Object" to the right of the evaluation, it becomes less apparent what are you really doing. Well at least in my opinion...
Both are equivalent, but the
null != object
is an old practice from languages where it is valid to writeif (object = null)
and accidentally assign null to the object. It is a guard to stop this accident from happening.Most people say
Object != null
because it is what they are used to and so it is easier to read.The best argument I've heard for
null != object
is to avoid bad expressions. e.g. to pickup a typo inif (var == 1)
It's just a matter of readability. If you can read your code out loud and it makes sense it is easier to understand. The second version is like Yoda-talk.. "null is not the object.." compared the "The object is not null"..
This same goes for giving your variables and methods good names.
A good reference site for writing readable code: http://www.cleancoders.com/
The
!=
operator behaves just as the test for equality operator==
.Ignoring any side effects in the expressions then (
expr1 != expr2
) and (expr2 != expr1
) are exactly the same.If Object is a variable (or constant) then (
null != Object
) is just as valid (although a little bit less readable).It is the same. It is almost like saying if
1 != 2
. Does this imply2 != 1
?