Мої колеги говорять мені, що в геттерах і сетерах має бути якомога менше логіки.
Але я переконаний, що в геттерах і сетерах може бути приховано багато речей, щоб захистити користувачів / програмістів від деталей реалізації.
Приклад того, що я роблю:
public List<Stuff> getStuff()
{
if (stuff == null || cacheInvalid())
{
stuff = getStuffFromDatabase();
}
return stuff;
}
Приклад того, як робота пропонує мені робити речі (вони цитують «Чистий код» від дядька Боба):
public List<Stuff> getStuff()
{
return stuff;
}
public void loadStuff()
{
stuff = getStuffFromDatabase();
}
Наскільки логіка доречна у сеттера / геттера? Яке використання порожніх геттерів та сетерів, крім порушення прихованих даних?
public List<Stuff> getStuff() { return stuff; }
StuffGetter
інтерфейс, вкажіть, StuffComputer
який робить обчислення, і загорніть його всередині об'єкта StuffCacher
, який відповідає за доступ до кешу або переадресацію дзвінків до того, StuffComputer
що він завершує.