Optional<T> equivalent in D?
Meta
jared771 at gmail.com
Sat Nov 16 02:18:38 PST 2013
On Saturday, 16 November 2013 at 05:04:42 UTC, Jonathan M Davis
wrote:
> I really don't understand this. Optional<T> is one of the most
> useless ideas
> that I've ever seen in Java. Just use null. It's built into the
> language. It
> works just fine. And wrapping it in a class isn't going to make
> it go away.
> Just learn to deal with null properly. I've known many
> programmers who have no
> problems with null whatsoever, and I'd be worried about any
> programmer who is
> so scared of it that they feel the need to wrap nullable
> objects in another
> type which has its own concept of null.
The value of an Option<T> type is that it moves checking for null
into the type system. It forces you to check for null before you
perform any potentially NullPointerException-throwing operations,
whereas using naked class references in Java, it's easy to
forget, or miss a null check, or just ignore it and hope
everything is fine. With Option<T>, you have no choice but to
check for null before you perform an operation on the wrapped
class reference.
> The only types which aren't nullable in Java are the primitive
> types, and if
> you use them in generics (like Optional<T> does), then you get
> a class that
> boxes the primitive type rather than using the primitive type
> directly, and
> that object is of course nullable. So, you might as well just
> use the class
> that boxes the primitive type directly and set its reference to
> null when you
> need it to be null. And Optional<T> doesn't even protect
> against null, since
> it's perfectly possible to make its contents null. So, as far
> as I can see,
> Optional<T> is utterly pointless. IMHO, it's outright bad
> software design.
I would have to respectfully disagree with that. Proper use of an
Option<T> type can dramatically reduce the chance of calling a
method on a null object, or even eliminate it entirely.
More information about the Digitalmars-d-learn
mailing list