Meine Kollegen sagen mir, dass es bei Gettern und Setzern so wenig Logik wie möglich geben sollte.
Ich bin jedoch davon überzeugt, dass viele Dinge in Gettern und Setzern verborgen sein können, um Benutzer / Programmierer vor Implementierungsdetails zu schützen.
Ein Beispiel von dem, was ich tue:
public List<Stuff> getStuff()
{
if (stuff == null || cacheInvalid())
{
stuff = getStuffFromDatabase();
}
return stuff;
}
Ein Beispiel, wie mir die Arbeit sagt, Dinge zu tun (sie zitieren 'Clean Code' von Onkel Bob):
public List<Stuff> getStuff()
{
return stuff;
}
public void loadStuff()
{
stuff = getStuffFromDatabase();
}
Wie viel Logik ist in einem Setter / Getter angemessen? Was nützt ein leerer Getter und Setter außer einer Verletzung des Datenversteckens?
public List<Stuff> getStuff() { return stuff; }
StuffGetter
Schnittstelle, implementieren Sie ein, StuffComputer
das die Berechnungen ausführt, und verpacken Sie es in ein Objekt von StuffCacher
, das entweder für den Zugriff auf den Cache oder für die Weiterleitung von Aufrufen an das zu verpackende Objekt verantwortlich ist StuffComputer
.