Abbiamo iniziato a utilizzare FindBugs e ad annotare i nostri parametri con @Nonnull
in modo appropriato, e funziona ottimo per segnalare bug all'inizio del ciclo. Finora abbiamo continuato a controllare questi argomenti per null
usando checkNotNull
di Guava, ma preferirei controllare null
solo ai bordi - luoghi in cui il valore può entrare senza essere stato controllato per null
, ad esempio, una richiesta SOAP.
// service layer accessible from outside
public Person createPerson(@CheckForNull String name) {
return new Person(Preconditions.checkNotNull(name));
}
...
// internal constructor accessed only by the service layer
public Person(@Nonnull String name) {
this.name = Preconditions.checkNotNull(name); // remove this check?
}
Capisco che @Nonnull
non blocchi null
valori stessi.
Tuttavia, dato che FindBugs indica ovunque un valore viene trasferito da un campo non marcato a uno marcato @Nonnull
, non possiamo dipendere da esso per catturare questi casi (che fa) senza dover controllare questi valori per null
ovunque vengano passati in giro nel sistema? Sono ingenuo per voler fidarmi dello strumento ed evitare questi controlli dettagliati?
In conclusione: Mentre sembra sicuro rimuovere il secondo controllo null
di seguito, è una cattiva pratica?
Questa domanda è forse troppo simile a Si dovrebbe verificare null se non si aspetta nulla , ma sto chiedendo specificamente in relazione all'annotazione @Nonnull
.