Arka fon
Ben "Temiz Kod kitap" okuyorum ve paralel olarak, bankacı hesabı gibi Kata jimnastik nesneleri üzerinde çalışıyorum ve bu kural üzerinde sıkışıp kaldım:
Jimnastik nesnelerinin 9. kuralı, alıcı veya ayarlayıcı kullanmamamızdır.
Oldukça eğlenceli görünüyor ve bu prensibe katılıyorum. Dahası, Temiz Kod'un 98-99. Sayfalarında yazar, getters / setters'ın soyutlamayı kırdığını ve nesnemize sormamız gerekmediğini, ancak nesnemize söylememiz gerektiğini açıklar.
Bu aklıma mükemmel geliyor ve bu prensibe tamamen katılıyorum. Sorun pratikte ortaya çıkıyor.
bağlam
Örneğin, bazı kullanıcıları listelemem ve kullanıcı ayrıntılarını görüntülemem gereken bir uygulamam var.
Kullanıcım şunlardan oluşur:
-> Name
--> Firstname --> String
--> Lastname --> String
-> PostalAddress
--> Street --> String
--> PostalCode --> String
Sorun
Yalnızca basit bir bilgi görüntülemem gerektiğinde ( ve o alanda fazladan işleme ihtiyacım olmadığını doğrulamam gerekir) alıcıları önlemek için ne yapabilirim ya da basit bir ad ( rastgele) çıkış desteği?
Aklımda ne var
Bir çözüm yapmak:
user.getName().getFirstName().getStringValue()
Tamamen korkunç olan, jimnastik nesnelerinin birçok kuralını çiğneyen ve Demeter Yasasını çiğneyen.
Bir diğeri şöyle bir şey olurdu:
String firstName = user.provideFirstnameForOutput();
// That would have called in the user object =>
String firstName = name.provideFirstnameForOutput();
// That would have called in the name object =>
String firstName = firstname.provideFirstnameForOutput();
Ama bu çözümden çok rahat hissetmiyorum, sadece standart bir alıcı / ayarlayıcıyı sadece Demeter yasalarını eşleştirmeyi amaçlayan bir yöntemle atlamak gibi bir "daha üst düzey erişimci" gibi görünüyor ...
Herhangi bir fikir ?