4

Hi In our company they follow a strict rule of comparing with null values. When I code if(variable!=null) in code review I get comments on this to change it to if(null!=variable). Is there any performance hit for the above code? If anybody explains highly appreciated.

Thanks in advance

5
  • Shouldn't be any performance gain or degradation either way afaik, guess it's just how they like to do it. Commented Feb 13, 2011 at 15:45
  • There is a great answer to this question over at stackoverflow.com/questions/271561/… Commented Feb 13, 2011 at 15:47
  • This coding style is called "Yoda conditions", if you search for it you find many examples and discussions. Commented Feb 13, 2011 at 16:24
  • Possible duplicate of stackoverflow.com/questions/271561/… Commented Feb 13, 2011 at 16:59
  • @J Angwenyi: The answers there will answer this question, but it's still a different language. Commented Feb 13, 2011 at 17:01

4 Answers 4

11

I don't see any advantage in following this convention. In C, where boolean types don't exist, it's useful to write

if (5 == variable)

rather than

if (variable == 5)

because if you forget one of the eaqual sign, you end up with

if (variable = 5)

which assigns 5 to variable and always evaluate to true. But in Java, a boolean is a boolean. And with !=, there is no reason at all.

One good advice, though, is to write

if (CONSTANT.equals(myString))

rather than

if (myString.equals(CONSTANT))

because it helps avoiding NullPointerExceptions.

My advice would be to ask for a justification of the rule. If there's none, why follow it? It doesn't help readability.

Sign up to request clarification or add additional context in comments.

2 Comments

If myString shouldn't be null (which generally it shouldn't), then it's much better to throw an exception than carry on (usually).
I agree, there's no place for it in Java. It just makes the code harder to read.
3

No performance difference - the reason is that if you get used to writing (null == somevar) instead of (somevar == null), then you'll never accidentally use a single equals sign instead of two, because the compiler won't allow it, where it will allow (somevar = null). They're just extending this to != to keep it consistent.

I personally prefer (somevar == null) myself, but I see where they're coming from.

2 Comments

I don't see how somevar = null will compile in an if condition (except if the type of somevar is Boolean)
Good point - I don't know about Java, but I know in some of the similarly-structured languages like C or C++, it will compile, with unexpected results. And coding standards tend to carry over to similar languages for a lot of developers.
3

It's a "left-over" from old C-coding standards.

the expression if (var = null) would compile without problems. But it would actually assign the value null to the variable thus doing something completely different. This was the source for very annoying bugs in C programs.

In Java that expression does not compile and thus it's more a tradition than anything else. It doesn't erver any purpose (other than coding style preferences)

1 Comment

Auto-unboxing. Probably a mistake IMO. nulls don't help things.
3

This has nothing to do with performance. It's used to prevent that you assign accidentally instead of comparing. An assignment null = var won't make any sense. But in Java var = null also won't compile so the rule of turning them around doesn't make sense anymore and only makes the code less readable.

2 Comments

but "if (var = null)" won't compile either.
@JB Nizet You are right. I thought in C++, will update the answer

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.