Какой самый яркий способ назвать ресурсы в Android?

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

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

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

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

Ответы

Ответ 1

Самое главное помнить, я думаю, в том, что отлично использовать один и тот же идентификатор в нескольких макетах. Например, @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.

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

Ответ 2

Итак, 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 для переименования и автоматического рефакторинга. Полезно для изменения идентификаторов на лету

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

R.string.home_button_text

Я бы:

R.string.home_button

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

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