А какая архитектура пакетов в Android Studio у Вас?

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

Сейчас пока создал следующее:
com.mycompany.app
|__activities
|__adapters
|__fragments
|__models
|__utils

Хотелось бы что-то похожее на MVC. Чтобы все было логично. Правильно ли будет так? И подскажите хорошие примеры или советы по правильной архитектуре android приложений.
Заранее спасибо!)
  • Вопрос задан
  • 2426 просмотров
Решения вопроса 2
@georgeci
-database
--dao
--schema
-di
--module
--component
-ui
--activity
--fragment
--adapter
--customview
--presenter
--widget
-api
--response
-model
-utils
--rx
--logger
--bus
---event
Ответ написан
В последних проектах делаю такую структуру:
ru.mycompany.myapp
├─ activities
├─data
   └─  dao
├─views
   ├─ adapters
   ├─ customview
   ├─ fragments
   └─ widgets
├─ network
   └─api
     └─responce
├─ models
└─utils


Вообще можете почитать, например, эту статью для того, чтобы привести свой код и структура проекта в порядок)
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
petermzg
@petermzg
Самый лучший программист
controls
models
services
utils
Ответ написан
@VZVZ
Reverse-Engineer, Software Developer, Architect
> Хотелось бы что-то похожее на MVC. Чтобы все было логично. Правильно ли будет так?
MVC не подходит для мобила и десктопа. Ибо там не может быть C, такого, как на вебе.

> как вы организуете структуру вашего проекта. Какие пакеты классов вы создаете?
Прежде всего, я создаю обертки для стандартного API. Можно сказать - фреймворк.
На винде выглядит дико писать под голое API ОС и так давным-давно никто не делает, пишут под .NET или хотя бы VCL. На Android это в порядке вещей. Линукс же.
Так как разрабы самой ОС не позаботились об этом, то заботиться приходится самому.
И даже на уровне хелловорлда чувствуется польза от этого, я не пишу
Toast.makeText(this.getActivity(), "Blablabla", 500).show();
Я просто пишу:
MessageBox.show("Blablabla");
А все остальное делает самописный класс MessageBox. Время показа Toast рассчитывается автоматом по длине текста, при этом метод show имеет и гибкие перегрузки с кучей параметров, все те же, что и в нативном Toast.
Для удобства re-use, все подобные классы лучше вынести в отдельный проект, отдельный jarник. А собственно код под этот фреймворк - писать прямо в своем проекте.
В остальном архитектура зависит от задачи, скажем HTTP-библиотека должна иметь классы GetRequest и PostRequest, и высокоуровневый класс HttpClient с контейнером куков, и т.д.
Чтобы быть хорошим архитектором, однозначно нужно рассмотреть максимум готовых фреймворков, чтобы извлечь из них лучшее.
Ответ написан
@Kren_vpravo
android developer
Перешел в разбиению пакетов по задачам, а не по типу классов.
Как тут https://github.com/google/iosched/tree/master/andr...
Но в команде так наверное не получится из-за частого рефакторинга, когда полный список всех фич перед началом проекта не известен.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы