Какой самый яркий способ назвать ресурсы в 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. Для меня это более читаемо, чем "текст" в конце идентификатора.
В некоторых случаях, возможно, не очевидно, какой тип ресурса что-то есть, и в этом случае я делаю идентификатор немного более наглядным.