Ho usato la libreria Annotazione JDT nel mio progetto Java perché mi piace molto ciò che offre. Per essere più precisi, ho utilizzato le annotazioni @Nullable
e @NonNullByDefault
perché posso utilizzare la sinergia con Eclipse per analizzare automaticamente possibili valori di null
e cosa può portare a NullPointerException
bug.
Sfortunatamente, JDT Annotation è concesso in licenza con EPL1 che, per quanto ne so, è incompatibile con GPL2 perché il primo è una licenza di permesso d'autore debole e la scelta di alcune clausole. Poiché il progetto dovrebbe essere pubblicato con una licenza GPL2, sto esplorando diverse opzioni, ma non ho ancora nessuna soluzione che offra la stessa funzionalità o quasi la stessa.
Non sono entusiasta di aggiungere controlli nulli in quanto ingombrano il codice solo con quello che un'annotazione potrebbe aver risolto. Ma sfortunatamente sembra essere l'unica opzione praticabile? Sto cercando alcune competenze in merito a questo argomento. Quello che propongo è di usare Preconditions
di Google per formulare precondizioni come:
Preconditions.checkArgument(providedArgument != null, "The provided argument must not be null!");
rispettivamente:
Preconditions.checkState(invariantField != null, "The field may not be null!");
Questi risolveranno il problema naturalmente e saranno più espliciti, secondo me, quando si tratta di documentare i miei contratti tramite codice. Di solito li denuncio anche con tag personalizzati nel mio Javadoc, ad esempio @pre providedArgument != null
o @inv invariantField != null
.
Sarei grato per tutti