Sorunları erken yakalamak için istisnalar kullanırım. Örneğin:
public int getAverageAge(Person p1, Person p2){
if(p1 == null || p2 == null)
throw new IllegalArgumentException("One or more of input persons is null").
return (p1.getAge() + p2.getAge()) / 2;
}
Programım null
bu fonksiyona asla geçmemelidir . Asla niyetinde değilim. Ancak hepimizin bildiği gibi, programlamada istenmeyen şeyler olur.
Bu sorun ortaya çıkarsa bir istisna atmak, programdaki diğer yerlerde daha fazla soruna neden olmadan önce onu tespit etmeme ve düzeltmeme izin verir. İstisna programı durdurur ve bana "burada kötü şeyler oldu, düzelt" diyor. Bunun yerine null
programda dolaşmak başka yerde sorunlara neden oluyor.
Şimdi, haklısın, bu durumda bu hemen hemen null
bir neden olur NullPointerException
, bu yüzden en iyi örnek olmayabilir.
Ancak bunun gibi bir yöntemi düşünün:
public void registerPerson(Person person){
persons.add(person);
notifyRegisterObservers(person); // sends the person object to all kinds of objects.
}
Bu durumda, null
parametre olarak programın etrafından geçirilir ve daha sonra hatalara neden olabilir, bu da başlangıç noktalarına geri dönmek zor olacaktır.
Fonksiyonu şu şekilde değiştirmek:
public void registerPerson(Person person){
if(person == null) throw new IllegalArgumentException("Input person is null.");
persons.add(person);
notifyRegisterObservers(person); // sends the person object to all kinds of objects.
}
Başka yerlerde garip hatalara neden olmadan önce sorunu daha fazla tespit etmeme izin veriyor.
Ayrıca, null
parametre olarak referans sadece bir örnektir. Geçersiz argümanlardan başkasına kadar birçok sorun olabilir. Onları erken tespit etmek her zaman daha iyidir.
Öyleyse sorum basit: bu iyi uygulama mı? İstisnaları sorun önleyici araçlar olarak kullanmam iyi mi? Bu istisnaların meşru bir uygulaması mı yoksa sorunlu mu?