![](https://cdn.userecho.com/characters/65.png?1)
Запах кода "Класс данных" - это точно анти-паттерн?
Здравствуйте, прежде всего хочу сказать, что сайт просто замечательный, лучшая подача материала, жаль, что пока нельзя купить печатное издание Паттернов, как по мне - изложение лучше, чем в HeadFirst.
Теперь к сути.
https://refactoring.guru/ru/smells/data-class
1. Что на счет dto-объектов? Классов для представления объектов БД. Классов для передачи данных от бэкэнда по сети в ajax-сценариях. Это в чистом виде классы данных, но туда явно не стоит складывать логику. Мне кажется, для dto нужно сделать примечание в статье.
2. Что на счет юнит-тестирования? Если логика лежит в классе (в геттерах, сеттерах, в методах экземпляра), то что бы писать юнит-тесты, надо все классы наследовать от интерфейсов (что бы замокать потом). А мокать геттеры и сеттеры - выглядит не очень, на мой взгляд. Либо делать на каждый класс интерфейс со всеми полями, что по сути превращает класс в полноценный сервис, только в этом сервисе помимо логики ещё и сами данные. В общем, я к том, что не вижу в Классе данных запаха, т.к. в классе и должны быть данные (ну либо очень специфичные геттеры-сеттеры, которые, опять же, как-то надо тестировать), а бизнес-логика - в сервисах, которые можно описывать с помощью интерфейсов и которые удобно тестировать.
Customer support service by UserEcho
Здравствуйте, Артём!
Спасибо за хорошие вопросы. Постараюсь развить эти темы во второй редакции курса рефакторинга.