Re: String comparison - which way around?
Lew wrote:
Daniel Pitts wrote:
Why do you think its uglier?
For no rational reason. (Side note: "it's", with the apostrophe.)
Is it its or is it it's, it's always its question. :-)
is (2 == a) uglier than (a == 2)?
Yes, to me.
I think that more people are used to (a == 2), but they both convey the
same idea to me.
In my own mind, the variable /a/, or /str/ from the earlier posts, is the
center of the idiom, and the proper owner of the /equals()/ behavior.
Actually, whichever variable risks /null/-hood more would be the left-hand
variable in my mind, again just a matter of style not logic.
Since /str/ has the risk of being /null/ and is the first thing to check, it
stays the central variable in the /equals()/ test, in my own mind:
if ( str != null && str.equals( whatever ) )
It comes to me as a strange change in grammatical subject to say:
if ( str != null && whatever.equals( str ) )
even though it means exactly the same thing.
Actually, the first one would work if whatever == null, the second one
doesn't. Which is why people choose to use "something".equals, because
in that case, "something" can't ever be null (baring some bizarre JVM
error). Think of this case:
if (str == null || !str.equals("foo")) {
System.out.ppintln("str isn't foo");
if (str == null || !str.equals("bar")) {
System.out.println("str isn't foo, and isn't bar either");
}
}
versus
if (!"foo".equals(str)) {
System.out.ppintln("str isn't foo");
if (!"bar".equals(str)) {
System.out.println("str isn't foo, and isn't bar either");
}
}
I think the second approach is far clearer. and is correct for the case
of str == null.
OTOH, if we are checking both operands for /null/ then it's arbitrary even to
me which comes first, but I would use the same variable "on the left" of both
the /null/ check and the /equals()/ check:
if ( (str == null? whatever == null : str.equals( whatever )) )
where /str/ is the "left-hand" variable throughout.
Not much more rational than liking the color indigo more than orange.
Well, indigo IS a better color than orange :-)
- Lew