Нет никакого смысла, если нормально программировать и строить простой удобный код. Этакий способ формально соблюсти инкапсуляцию и сокрытие данных: состояние приватное? Приватное :)
Чреваты тем, что плодят высокую связанность в коде, состояние и управляется снаружи (на основе геттеров) и контролируются инварианты где угодно и как угодно. По сути превращаем сущности в структуры, но тк это все же бизнес-объекты, а знания бизнес-состояния нужно — то они гуляют по всему проекту и ничем не ограничены... заплетая и заплетая код снова и снова, а также погружая в эти «сущности» все больше и больше знаний...
Доходит до того, что через заказ можно достать товар, через товар можно достать поставщика, через поставщика пользователя с данными аутентификации... и все работает со всем... плодя кучу сервисов и взрывая мозг...
По вопросу
Нужны только бля быстрых CRUD и для совместимости с кучей библиотек. А также говнокодерам «использовать данные в сервисах»
Сеттеры и геттеры нужны для разных манипуляций: валидация, костыльного маппинга, сериализации и десерриализации.
Хорошими и современной практикой сейчас является — не использование и геттеров и сеттеров...
Литература:
https://martinfowler.com/bliki/TellDontAsk.html
https://www.martinfowler.com/bliki/AnemicDomainMod...
Закон Деметры
Мои изыскания:
Зачем (не)нужны геттеры?
Геттеры/сеттеры и проблема с инкапсуляцией (примеры на Symfony, аналог Spring в php с аналогичной плохой практикой)