FindBugs'ı kullanmaya ve parametrelerimize @Nonnull
uygun şekilde açıklama eklemeye başladık ve döngüdeki hataları belirtmek harika çalışıyor. Şimdiye kadar null
Guava'ları kullanmak için bu argümanları kontrol etmeye devam ettik checkNotNull
, ancak null
değerin kontrol edilmeden null
, örneğin bir SOAP isteği olmadan girilebileceği yerlerde sadece kenarlarda kontrol etmeyi tercih ederim .
// 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?
}
Bunun değerlerin kendisini @Nonnull
engellemediğini anlıyorum null
.
Bununla birlikte, FindBugs'ın bir değerin işaretlenmemiş bir alandan işaretli bir alana aktarıldığı herhangi bir yere işaret edeceği göz önüne alındığında, @Nonnull
bu değerleri, null
geçtikleri her yer için kontrol etmek zorunda kalmadan bu vakaları (ki) yakalamak için ona güvenemeyiz mi? sistem? Araca güvenmek ve bu ayrıntılı denetimlerden kaçınmak istiyorum naif miyim?
Alt satır:null
Aşağıdaki ikinci kontrolü kaldırmak güvenli gibi görünse de , kötü bir uygulama mı?
Bu soru belki de null beklemiyorsa null olup olmadığını kontrol etmeli , ancak özellikle @Nonnull
ek açıklama ile ilgili soruyorum .
@Nonnull
: bir sözleşme şartname olarak. Sözleşmenin arkasındaki savunma kontrollerini kaldırdım ve şu ana kadar hiç sorun yaşamadım.