0
Searching answer

Запах кода "Класс данных" - это точно анти-паттерн?

Artem 11 months ago updated by Alexander Shvets 11 months ago 1

Здравствуйте, прежде всего хочу сказать, что сайт просто замечательный, лучшая подача материала, жаль, что пока нельзя купить печатное издание Паттернов, как по мне - изложение лучше, чем в HeadFirst.

Теперь к сути.

https://refactoring.guru/ru/smells/data-class

1. Что на счет dto-объектов? Классов для представления объектов БД. Классов для передачи данных от бэкэнда по сети в ajax-сценариях. Это в чистом виде классы данных, но туда явно не стоит складывать логику. Мне кажется, для dto нужно сделать примечание в статье.

2. Что на счет юнит-тестирования? Если логика лежит в классе (в геттерах, сеттерах, в методах экземпляра), то что бы писать юнит-тесты, надо все классы наследовать от интерфейсов (что бы замокать потом). А мокать геттеры и сеттеры - выглядит не очень, на мой взгляд. Либо делать на каждый класс интерфейс со всеми полями, что по сути превращает класс в полноценный сервис, только в этом сервисе помимо логики ещё и сами данные. В общем, я к том, что не вижу в Классе данных запаха, т.к. в классе и должны быть данные (ну либо очень специфичные геттеры-сеттеры, которые, опять же, как-то надо тестировать), а бизнес-логика - в сервисах, которые можно описывать с помощью интерфейсов и которые удобно тестировать.

DIR2.0
+1
Searching answer

Здравствуйте, Артём!

Спасибо за хорошие вопросы. Постараюсь развить эти темы во второй редакции курса рефакторинга.