Подтвердить что ты не робот

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

[тип элемента]. Я использую сокращенную букву для типов виджетов:

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

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

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>

Также & hellip;

<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

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