Что лучше для пакета Android MVVM по функциям или по слоям?
Еще один вопрос "что лучше", я знаю, что это очень субъективно. Мое определение лучше будет:
- Используется лучшими командами разработчиков
- Лучше всего для модульного тестирования
- Самое модульное / простое в разработке приложение для продакшн
- Что рекомендует Google (это то, где я больше всего смущен)
Все чертежи Android используют пакетные функции:
https://github.com/googlesamples/android-architecture
/tasks
/addedittask
/taskdetail
и все примеры компонентов архитектуры, используя пакет за слоем:
https://github.com/googlesamples/android-architecture-components
/db
/model
/ui
/persistence
Я запутался, потому что внизу сайта "Компоненты архитектуры" на самом деле есть ссылки на образцы проектов Android MVP и MVVM, что мне кажется противоречивым.
1 ответ
Я думаю, что это зависит от размера проекта. Также в разных компаниях команды используют разные подходы.
Я предпочитаю использовать в небольшом проекте второй тип управления пакетами.
Если вы хотите повторно использовать компонент ModelView, просто сохраните их в пакетах функций. А может быть с этим типом:
/db
feature1/
feature2/
/model
feature1/
feature2/
/ui
/persistence
feature1/
feature2/
На основании руководства по архитектуре Android и чистой архитектуры, я бы предложил этот подход
data/
model/
remote/
local/
Repository
domain/
usecases/
GetUserListUseCase
presentation/
screen1/
screen1Activity
screen1Fragment
screen1ViewModel
screen2/
screen2Activity
screen2Fragment
screen2ViewModel
core
common/
di/
Подробнее здесь: https://www.toptal.com/android/android-apps-mvvm-with-clean-architecture