On 3 May 2011 08:19, Carl Jokl <[email protected]> wrote:

> This may be redundant in Java and I am aware of the assignment vs
> comparison problem in C/C++. The result of an assignment is the value
> assigned. The only time when it would be a problem in a comparison in
> Java is for a boolean
> value because the assignment is a boolean expression but a boolean
> value cannot be null anyway and also it is preferred to use the
> boolean variable or a negation of it directly in the if statement. C/C+
> + doesn't have  a true boolean type and if statements happily work on
> numeric types or pointers which can be treated as numeric types.
>
> The practice of using if (null == value) may be redundant in Java but
> I remember getting into a discussion about how it was still relevant
> in .net by virtue of implicit cast behaviour making the result more
> unpredictable in .net than Java. Presumably I would guess it would be
> if some type has a null value and an implicit cast exists to cast a
> value of that type to a boolean value including when it is null but
> that to me seems like a very narrow fringe case (and also potentially
> an argument against custom implicit casts perhaps).
>
>
Implicit conversions shouldn't be a problem.  After all, Java's had implicit
conversions to Strings at the drop of a + operator, and most Java devs don't
seem to have a problem with this.

Speaking of which... + for string concatenation, that'll be my gripe on
Wednesdays :)



> On May 3, 3:55 pm, Cédric Beust ♔ <[email protected]> wrote:
> > On Tue, May 3, 2011 at 4:16 AM, Kevin Wright <[email protected]
> >wrote:
> >
> > > There was a code style which stated null checks should have taken the
> > >> form of if (null == variable) which coming from Java I said was
> > >> unnecessary however it turns out that due to .net support for implicit
> > >> casts there are some fringe cases where if (variable == null) will
> > >> behave differently to if (null == variable) apparently. Most of the
> > >> developers used if (variable == null) though in spite of the coding
> > >> standard because it was more intuitive.
> >
> > > I think this originates with checks against literal values instead of
> > > against null when using value instead of reference equality.
> >
> > No, I think this comes from the fact that C++ allows assignments in
> > expressions, therefore you can write:
> >
> > if (a = NULL) ...
> >
> > when you actually mean
> >
> > if (a == NULL) ...
> >
> > Reversing the arguments avoids this pitfall. Obviously, this is not
> > necessary in Java.
> >
> > --
> > Cédric
>
> --
> You received this message because you are subscribed to the Google Groups
> "The Java Posse" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/javaposse?hl=en.
>
>


-- 
Kevin Wright

gtalk / msn : [email protected]
<[email protected]>mail: [email protected]
vibe / skype: kev.lee.wright
quora: http://www.quora.com/Kevin-Wright
twitter: @thecoda

"My point today is that, if we wish to count lines of code, we should not
regard them as "lines produced" but as "lines spent": the current
conventional wisdom is so foolish as to book that count on the wrong side of
the ledger" ~ Dijkstra

-- 
You received this message because you are subscribed to the Google Groups "The 
Java Posse" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en.

Reply via email to