Выбор ответа Junior Clean Architecture и слои спрашивают часто обновлено

Зачем маппить DTO в доменные модели

Вопрос

Зачем преобразовывать ответ сервера (DTO) в отдельную доменную модель?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Чтобы изменения API и базы не расползались по приложению, а домен работал с проверенными типами. DTO повторяет формат сервера: snakecase, строки вместо дат, опциональные поля «на всякий случай».

Варианты ответа

  1. Так быстрее работает сеть: доменная модель меньше DTO и сериализуется в запрос компактнее
  2. Это требование App Store и Google Play к приложениям, которые хранят данные пользователя
  3. Чтобы изменения API и базы не расползались по приложению, а домен работал с проверенными типамиправильный ответ
  4. DTO нельзя декодировать без маппинга: Codable и kotlinx.serialization требуют на входе доменный тип

Разбор

DTO повторяет формат сервера: snake_case, строки вместо дат, опциональные поля «на всякий случай». Доменная модель описывает понятия приложения: Date, enum статуса, обязательные поля. Маппинг в одном месте (data-слой) изолирует остальной код от изменений API. Скорость сети и требования магазинов тут ни при чём.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.