Что лучше для пакета Android MVVM по функциям или по слоям?

Еще один вопрос "что лучше", я знаю, что это очень субъективно. Мое определение лучше будет:

  1. Используется лучшими командами разработчиков
  2. Лучше всего для модульного тестирования
  3. Самое модульное / простое в разработке приложение для продакшн
  4. Что рекомендует 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

Другие вопросы по тегам