Aradığım yöntemin bu beklentileri karşılayacağını bilsem bile beklentilerimi karşıladığını doğrulayarak bir yöntem çağrısının dönüş değerine karşı savunmam gerekip gerekmediğini merak ediyorum.
VERİLEN
User getUser(Int id)
{
User temp = new User(id);
temp.setName("John");
return temp;
}
YAPMALI MIYIM
void myMethod()
{
User user = getUser(1234);
System.out.println(user.getName());
}
VEYA
void myMethod()
{
User user = getUser(1234);
// Validating
Preconditions.checkNotNull(user, "User can not be null.");
Preconditions.checkNotNull(user.getName(), "User's name can not be null.");
System.out.println(user.getName());
}
Bunu kavramsal düzeyde soruyorum. Metodun iç işleyişini bilirsem ararım. Ya yazdığım için ya da kontrol ettiğim için. Ve döndürdüğü değerlerin mantığı benim önkoşullarıma uyuyor. Doğrulamayı atlamak "daha iyi" mi, yoksa "daha uygun mu" mı, yoksa her zaman geçmesi gerekse bile uygulayacağım yönteme geçmeden önce hala yanlış değerlere karşı mı savunmalı mıyım?
Tüm cevaplardan aldığım sonuç (kendinize gelmekten çekinmeyin):
Ne zaman iddia et- Yöntem geçmişte yaramazlık göstermiştir.
- Yöntem güvenilmeyen bir kaynaktan geliyor
- Yöntem, diğer yerlerden kullanılır ve açıkça koşullarını belirtmez
- Bu yöntem sizinkilerle yakından ilgilidir (ayrıntılar için seçilen cevaba bakınız)
- Metot açıkça uygun doktor, tip güvenliği, ünite testi veya şartlı kontrol gibi bir şeyle sözleşmesini tanımlar.
- Performans kritiktir (bu durumda, bir hata ayıklama modu iddiası hibrit bir yaklaşım olarak çalışabilir)
Null
)? Eğer isminiz ""
(null değil boş dizgeden) veya "N/A"
. Ya sonuca güvenebilirsin ya da uygun şekilde paranoyak olmalısın.