Eclipse, JAVA

Dire addio alle NullPointerException velocemente e semplicemente

Uno tra i peggiori e maggiormente insidiosi nemici del buon codice è il lancio di una NullPointerException. Peggiori perché molto frequente e insidiosi perché molto difficile da prevedere se non applicando una buona dose di attenzione durante la scrittura del codice.
Nel tempo sono state proposte varie soluzioni: si va dall’utilizzo di tipi cuscinetto (Optional<T>) alla scrittura di nuovi linguaggi (Ceylon) o di costrutti zuccherosi (Groovy ‘?’), ma nulla di applicabile velocemente e semplicemente al linguaggio Java.

A dire il vero la soluzione era già stata proposta con la JSR-305 il cui processo di inclusione nella specifica Java è attualmente ad un punto morto.
Fortunatamente la comunità di sviluppatori è più rapida ed è presente un’implementazione ospitata su Google Code e presente anche sui repository Maven.

La soluzione proposta sarebbe questa: si applica l’annotazione @Nullable alle variabile che ci si aspetta possano essere null, mentre si usa @Nonnull per quelle che ci si aspetta non possano mai essere null. Semplice e veloce. Ci penserà poi il compilatore/analizzatore statico di codice a verificare che non rischiamo di incorrere nell’odiata eccezione senza volerlo.
Nella versione ottimizzata vi è anche la possibilità di annotare il package per definire una semantica predefinita ed annotare solo le variabili nulle o viceversa.

Si dia il caso che questa sia proprio la soluzione ideale per Java. È infatti sufficiente configurare il proprio IDE per utilizzare queste annotazione nella fase di compilazione del codice ed impedirci così di incorrere in NullPointerException indesiderate. Senza contare che i principali software di analisi statica del codice utilizzano o possono utilizzare queste semplici annotazioni per metterci in guardia da accessi non controllati.

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...