Ответ 1
Прежде всего, Android не заставляет вас использовать какую-либо архитектуру. Не только это, но и несколько затрудняет попытку следовать любому. Это потребует от вас умного разработчика, чтобы избежать создания кодовой базы спагетти:)
Вы можете попробовать вписаться в любой шаблон, который вам известен, и вам нравится. Я считаю, что лучший подход будет каким-то образом проникать в ваши кишки, когда вы разрабатываете все больше приложений (извините за это, но, как всегда, вам придется совершать много ошибок, пока вы не начнете делать это правильно).
О шаблонах, которые вы знаете, позвольте мне сделать что-то не так: я буду смешивать три разных шаблона, чтобы вы почувствовали, что делает что-то в android. Я считаю, что Presenter/ModelView должен быть где-то в Фрагменте или Деятельности. Адаптеры иногда могут выполнять эту работу, поскольку они заботятся о входах в списки. Вероятно, действия должны работать как контроллеры. Модели должны быть обычными java файлами, тогда как представление должно содержать ресурсы компоновки и некоторые пользовательские компоненты, которые вам, возможно, придется реализовать.
Я могу дать вам несколько советов. Это ответ на wiki сообщества, поэтому, надеюсь, другие люди могут включить другие предложения.
Организация файлов
Я думаю, что в основном есть две разумные возможности:
- организовать все по типу - создать папку для всех действий, другую папку для всех адаптеров, другую папку для всех фрагментов и т.д.
- организовать все по домену (возможно, не лучшее слово). Это означает, что все, что связано с "ViewPost" , будет находиться внутри одной папки - активности, фрагмента, адаптеров и т.д. Все, что связано с "ViewPost" , будет в другой папке. То же самое для "EditPost" и т.д. Я предполагаю, что действия будут определять папки, которые вы создали, а затем для базовых классов, например, будет несколько более общих.
Лично я участвовал только в проектах с использованием первого подхода, но я действительно хотел бы попробовать позже, поскольку я считаю, что это могло бы сделать вещи более организованными. Я не вижу преимущества в том, что у меня есть папка с 30 несвязанными файлами, но то, что я получаю с первым подходом.
Нейминг
- При создании макетов и стилей всегда указывайте (или идентифицируйте их) с помощью префикса для активности (/фрагмента), где они используются.
Итак, все строки, стили, идентификаторы, используемые в контексте "ViewPost" , должны начинаться с "@id/view_post_heading" (например, для текстового вида), "@style/view_post_heading_style", "@string/view_post_greeting".
Это оптимизирует автозаполнение, организацию, избегает группировки имен и т.д.
Базовые классы
Я думаю, вы захотите использовать базовые классы для почти всего, что вы делаете: адаптеры, действия, фрагменты, службы и т.д. Они могут быть полезны хотя бы для целей отладки, чтобы вы знали, какие события происходят во всей вашей деятельности.
Общие
- Я никогда не использую анонимные классы - они уродливы и будут отвлекать ваше внимание, когда вы пытаетесь прочитать код.
- Иногда я предпочитаю использовать внутренние классы (по сравнению с созданием выделенного класса) - если класс не будет использоваться где-нибудь еще (и он маленький), я думаю, что это очень удобно.
- Подумайте о своей системе ведения журнала с самого начала - вы можете использовать систему регистрации Android, но хорошо ее используете!