FindBugs'ı kullanmaya ve parametrelerimize @Nonnulluygun şekilde açıklama eklemeye başladık ve döngüdeki hataları belirtmek harika çalışıyor. Şimdiye kadar nullGuava'ları kullanmak için bu argümanları kontrol etmeye devam ettik checkNotNull, ancak nulldeğ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 @Nonnullengellemediğ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, @Nonnullbu değerleri, nullgeç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 @Nonnullek 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.