Какой самый понятный способ назвать ресурсы в Android? - PullRequest
14 голосов
/ 21 января 2011

Какие соглашения об именах вы используете для файлов ресурсов и идентификаторов и какие преимущества они приносят?

Например, очень легко получить идентификатор вида, например "activity_settings_location_text_label", но быстро становится неуправляемым и грязным. Я не видел каких-либо указаний от Google по этому поводу, я пропустил это?

Ресурсы могут быть «сгруппированы» с использованием иерархического наименования, но какая структура лучше всего подходит для каждого типа ресурса? Строка, цвет, размеры, макеты, включает и т. Д.

Мое наименование в настоящее время является довольно произвольным, и ясно, что мне нужна лучшая структура (особенно, чтобы я мог легче находить идентификаторы, используя завершение кода в IDE).

Ответы [ 5 ]

12 голосов
/ 21 января 2011

Самая важная вещь, которую нужно помнить, я думаю, это то, что идеально использовать один и тот же идентификатор в нескольких макетах.Например, @id/title_bar является чистым и универсальным и работает, и намного проще, чем @id/settings_title_bar, @id/home_screen_title_bar, @id/search_title_bar и т. Д.

Мне также нравится называть макеты, предназначенные для действий, как @layout/activity_home и @layout/activity_search и т. Д. Рисунки и значки должны соответствовать тем же стандартам, что и в Android, т. Е. @drawable/ic_btn_explode и @drawable/ic_dialog_exploded.

Включения могут быть сложными, но более простыми, состоящими из нескольких элементов.и служат единственной, точной цели, которая, как правило, заканчивается как @layout/loading или @layout/error_message.

Я все еще работаю над разумным именованием строк, но опять же короткие, краткие имена делают весь процесс намного проще.

5 голосов
/ 21 ноября 2015

Итак, 4 года спустя ... Вот список «лучших практик» , которых я придерживаюсь при разработке для Android.

Вот раздел о ресурсах <Ч /> Например, при именовании ресурсов string это товары и недостатки

strings.xml

Назовите ваши строки с ключами, которые похожи на пространства имен, и не боится повторения значения для двух или более ключей. Языки сложные, поэтому пространства имен необходимы, чтобы привести контекст и сломать неоднозначность.

Bad

<string name="network_error">Network error</string>
<string name="call_failed">Call failed</string>
<string name="map_failed">Map loading failed</string>

Хорошо

<string name="error.message.network">Network error</string>
<string name="error.message.call">Call failed</string>
<string name="error.message.map">Map loading failed</string>

<ч /> P.S Если вы используете Android Studio, рефакторинг - это полный упадок. Это работает практически для всего. Не только код Java.

Просто поместите курсор на идентификатор и нажмите SHIFT + F6 , чтобы переименовать и автоматически выполнить рефакторинг. Полезно для смены идентификаторов на лету

2 голосов
/ 21 января 2011

Мой подход, который работал достаточно хорошо, заключается в том, что ресурс должен быть помещен в определенный файл XML, например, вы обычно помещаете определение цвета в colors.xml или строку текста в strings.xml файла ресурса является частью пути, поэтому вместо:

R.string.home_button_text

Я бы имел:

R.string.home_button

Я знаю, что это буквальная строка из-за части R.string. Для меня это более читабельно, чем помещать «текст» в конце идентификатора.

Иногда, однако, может быть неясно, к какому типу ресурса относится что-либо, и в этом случае я делаю идентификатор более описательным.

2 голосов
/ 21 января 2011

Я делаю это следующим образом: home_search_btn, что означает кнопку a, предназначенную для поиска чего-либо, и будет использоваться в операции с именем Home

2 голосов
/ 21 января 2011

Поскольку официальных рекомендаций по этому поводу нет, я бы порекомендовал.

  • Будьте последовательны.
  • Будь практичным.
  • По возможности, старайтесь придерживаться стиля исходного кода Android и android.R .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...