1
submitted 2 years ago by [email protected] to c/[email protected]

Which do you prefer of these two? The goal is the same. If bar is null then make foo null and avoid the exception. In other languages there is the ?. operator to help with this.

foo = bar == null ? null : bar.baz();
foo = bar != null ? bar.baz() : null;

I ask because I feel like the "English" of the first example is easier to read and has less negations so it is more straightforward, but the second one has the meat of the expression (bar.baz()) more prominently.

top 4 comments
sorted by: hot top new old
[-] [email protected] 2 points 2 years ago* (last edited 2 years ago)

I'd skip the ternary and go with

foo = Optional.ofNullable(bar)
        .map(Bar::baz)
        .orElse(null);

But if I didn't, I'd use the first form.

[-] [email protected] 2 points 2 years ago* (last edited 2 years ago)

I actually prefer

Optional.of(bar)
    .map(Bar::baz)
    .orElse(null)

You can crucify me but there is no way to miss the point in a quick glance here and I doubt that with JVM optimizations there is any meaningful performance impact, exceptionally in business code.

[-] [email protected] 0 points 2 years ago

The second, or early return/continue/break.

But don't forget the third option:

foo = null
if (bar != null)
    foo = bar.baz();

This is much more readable if nontrivial; the only downside is that this inhibits the practice of ubiquitous final.

Actually, doesn't Java allow lazy final if you don't initialize (that would require explicit else)? I speak too many languages ...

[-] [email protected] 1 points 2 years ago* (last edited 2 years ago)

This is much less readable if non-trivial. It's easy enough here, but now I need to search through the code to see where else foo was set.

this post was submitted on 28 Jun 2023
1 points (100.0% liked)

Java

1714 readers
1 users here now

For discussing Java, the JVM, languages that run on the JVM, and other related technologies.

founded 2 years ago
MODERATORS