Создание domain-mapper
Изучи соседние shared/domain/mapper/*Ktx.kt и помести преобразование в тематический KTX-файл. Не
создавай stateful Mapper-класс и не переноси mapping во ViewModel или use case.
Контракт
- Называй
Response -> Entityextension-функциюentity, а преобразование списка —entities. - Для другого направления используй короткое имя целевого типа или существующее соглашение проекта.
- Размещай параметры функции и аргументы конструктора целевой модели по одному на строку.
- Передавай внешние значения, которых нет в source-модели, явными параметрами mapper; не читай состояние из service locator или singleton.
- Возвращай non-null entity. Nullable поля ответа заполняй через
orEmpty, включая nullable примитивы изPrimitiveKtx.kt; добавь недостающее primitive-extension туда. - Не используй
return nullилиmapNotNullдля молчаливого удаления некорректных ответов. Если значение нельзя корректно восстановить, оставь валидацию и domain-ошибку вызывающей операции. - Не создавай отдельную UI-модель, если entity/domain-модель уже выражает нужное состояние.
Добавь focused unit-тест mapper, когда преобразование содержит ветвление, вложенные коллекции, форматирование или нетривиальные default-значения.