Вчера я вернулся на работу из отпуска, и в нашем ежедневном выступлении мои товарищи по команде упоминали, что они рефакторировали все объекты модели в нашем Java-коде, чтобы удалить все геттеры и сеттеры и сделать поля модели все общедоступными объектами вместо этого, вызывая Закон Деметры как причина для этого, потому что
чтобы облегчить нашу приверженность закону Деметры: модуль не должен знать о внутренностях "объектов", которые он манипулирует. Поскольку данные структуры не содержат поведения, они, естественно, раскрывают их внутреннюю структуру. Поэтому в этом случае Demeter не применяется.
Я признаю, что должен был освежить мои знания о LoD, но для жизни меня я не могу найти ничего, чтобы указать, что это находится в духе закона. Ни один из геттеров/сеттеров в наших моделях не содержит никакой бизнес-логики, что является его оправданием для этого, поэтому клиентам этих объектов не нужно понимать, выполняется ли какая-либо бизнес-логика в методах get/set.
Я думаю, что это неправильное понимание того, что значит "внутреннее знание структуры объектов", или, по крайней мере, воспринимает это слишком буквально и нарушает довольно стандартное соглашение в этом процессе.
Итак, мой вопрос заключается в том, действительно ли имеет смысл разоблачить внутреннюю структуру объектов модели напрямую, а не через getters/setters в имени LoD?