#android #android-layout #organization #code-cleanup
#Android #android-макет #организация #очистка кода
Вопрос:
Может ли кто-нибудь предоставить некоторые стратегии организации моего проекта, чтобы он был чистым? Допустим, у меня есть куча действий; хорошо ли поместить их все в отдельный пакет, а другие классы (например, пользовательские адаптеры) поместить в другой пакет, чтобы лучше отделить «логику»?
Кроме того, при создании XML-файлов для макетов, как я мог бы логически разделить XML-файлы макета, если у меня есть некоторые макеты, предназначенные для определенных действий, и другие файлы макета XML для пользовательских «строк» (для использования с адаптером) Я не хочу просто бросать их все в res / layout — это стало бы такой огромной проблемой, когда проект станет действительно большим.
Ответ №1:
Допустим, у меня есть куча действий; хорошо ли поместить их все в отдельный пакет, а другие классы (например, пользовательские адаптеры) поместить в другой пакет, чтобы лучше отделить «логику»?
Я не уверен, каковы наилучшие методы, но вот как я организовываю свои приложения: я обычно добавляю свои действия com.foo.appname.activity
, контент-провайдеров com.foo.appname.content
, сервисы com.foo.appname.service
и общие утилиты com.foo.appname.utils
.
Для таких вспомогательных классов, Adapters
которые используются только одним действием, я обычно делаю их статическими внутренними классами. Если они используются в нескольких действиях, я бы предоставил им видимость на уровне пакета в пакете действий.
Я не хочу просто бросать их все в res / layout
Я не думаю, что res
каталогам разрешено иметь подкаталоги, поэтому лучшее, что вы можете сделать, это придумать хорошую схему именования. Обычно я добавляю к файлу макета префикс типа: activity_foo.xml
, и т.д. fragment_foo.xml
Ответ №2:
Все эти предложения, конечно, на ваш выбор. Но когда я что-то разрабатываю, я использую для отделения логического уровня от «видимых» слоев и классов. Я имею в виду, что я использую разные пакеты для
a) Activites
b) Classes or Objects
c) Interface classes
d) Database classes
e) Interaction with Database
Я также создаю разные пакеты для всех из них, чтобы вы могли лучше организовать их. Но это всегда ваш выбор.
И с вашим макетом… Я не знаю, можете ли вы лучше организовать макет. Когда вы создаете свой проект, если вы видите, в вашей папке gen есть R.java класс. Этот класс автоматически определяет папки, такие как layout, drawable, raw… Но я не уверен, что вы можете создавать вложенные папки внутри него.