Какова наилучшая практика для именования идентификатора XML Element в Android?

Я не уверен, что кто-то был обеспокоен этой проблемой раньше, но для меня это одна большая боль.

Как вы указываете id для элемента xml в android?

Прямо сейчас я устанавливаю идентификатор с шаблоном [название деятельности / фрагмента] [тип элемента] [конкретное имя] . Например, если у меня есть EditText, чтобы сохранить электронное письмо, которое используется в LoginActivity, я дам id 'LoginEditTextEmail'.

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

Как вы устанавливаете идентификатор? Какова наилучшая практика?

Solutions Collecting From Web of "Какова наилучшая практика для именования идентификатора XML Element в Android?"

Описательные имена являются идеальными (такими же, как с именем любой переменной на любом языке программирования).

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

[Название деятельности / фрагмента] – Лично я бы отказался от этого, я стараюсь использовать один файл макета для каждого действия / фрагмента так, чтобы не было запутывания, какую деятельность должен представлять вид. Также бывают случаи, когда я повторно использую некоторые Просмотр виджетов в нескольких действиях, и я оставлю их с одинаковым идентификатором, чтобы упростить код для поиска и взаимодействия с ним (т. Е. Он может быть скопирован / вставлен или помещен в подкласс Activity)

[Element type] – для типов виджетов я использую сокращенную 3-х буквенную строку:

  • Edt = EditText
  • Txt = TextView
  • Lbl = TextView, статичный для маркировки чего-либо
  • Btn = Кнопка
  • Prg = ProgressBar
  • Lyt = Макет
  • и т.д…

[Конкретное имя] – никакого реального улучшения здесь не должно быть, оно должно быть до тех пор, пока оно должно быть для описания того, для чего оно предназначено.

Вы слишком оскорбительны. Просто назовите его каким-либо образом незабываемым для вас. Идентификаторы должны быть уникальными для каждого XML (т. my_edittext Вы можете иметь 50 различных макетов с идентификатором my_edittext ), поскольку вы находите представление по его идентификатору только через одну иерархию представлений.

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

Отбросьте фрагмент, активность и тип, если вы не квалифицируете их в кодировке, поэтому:

boolean isLoggedIn = false;

android:id="@+id/is_logged_in"

Как упоминалось в других ответах, XML предоставляет квалификатор, теперь вам нужно решить, необходима ли согласованность и / или дополнительная квалификация, и если это подходит. Вам действительно нужно пройти квалификацию, и если вы не поддерживаете код, который будет намного сложнее вами или кем-то еще?

Так что насчет strings.xml ?

Префикс id с фрагментом или квалификатором активности. Так, например:

<string name=" profile _is_logged_in_true">Logged in.</string>

<string name=" profile _is_logged_in_false">Not logged in.%</string>

Также…

<plurals name="plural_is_logged_in_duration">...

Я играл с:

<string name=" profile _isloggedin_false">Not logged in.</string>

Но еще не убежден. Это на самом деле проблема классификации, теперь с тех пор, как она решается другими дисциплинами путем пометки. Java предоставляет точечные пространства имен и классификаторы типов, поэтому

com.example.android.app.profile.State.isLoggedIn

Android использует такие вещи, как R.string 🙂 Итак, у вас есть Java плюс некоторое дополнительное пространство имен от Android. Не забывайте, что у вас может быть несколько файлов строк, поэтому, возможно:

res/values/widget_defaults.xml

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