Идентификация именования Android: нижний регистр с подчеркиванием против верблюда

В настоящее время я программирую приложение для Android. Теперь я выяснил, что вы не можете размещать объекты ресурсов, скажем, изображение в выпадающей папке и называть его «myTestImage.jpg». Это даст вам ошибку компилятора, так как синтаксис корпуса верблюда не разрешен, поэтому вам придется переименовать его как «my_test_image.jpg».

Но как насчет идентификаторов, которые вы определяете в XML-файле. Скажем, у вас есть следующее определение

<TextView android:id="@+id/myTextViewFirstname" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Firstname" /> 

Это правильное определение, компилирует и отлично работает на моем эмуляторе Android, хотя, как вы видите, я указываю идентификатор в синтаксисе case camel.

Теперь образцы Android всегда используют строчные буквы и подчеркивание. Это просто соглашение об именах, чтобы использовать нижний регистр с подчеркиванием для идентификатора или может вызвать проблемы на реальном устройстве?

Спасибо

Solutions Collecting From Web of "Идентификация именования Android: нижний регистр с подчеркиванием против верблюда"

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

Тем не менее, я медленно передумал на верблюжьем корпусе, потому что вы в итоге получили два разных соглашения об именах – например:

 // This must be undescored due to naming constrictions setContentView(R.layout.my_long_layout_name); // Now this looks a little out of place findViewById(R.id.myLongSpecificId); 

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

Если вы посмотрите на поля android.R.id.* , Вы заметите, что все они в верблюжьем футляре. Поэтому, если идентификаторы android указаны в верблюжьем футляре, я думаю, мы должны следовать этому соглашению 🙂

Я думаю, что он говорит об идентификаторах внутри xml файла.

например:

 android:id="@+id/home_button" 

против

 android:id="@+id/HomeButton" 

Я не нашел никаких соглашений или рекомендаций в этом вопросе, поэтому разработчики в моем проекте используют оба метода нечетко, что довольно болезненно 🙁

Если вы посмотрите на некоторые примеры приложений Google, например:

https://github.com/google/iosched

Они используют символы подчеркивания. Так … может быть, так мы должны это делать?

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

Просто посмотрите на это (добавив к тому, что ответил Даниил)

  // Camel Case TextView tvUserName = (TextView) findViewById(R.id.tvUserName); 
  // Small Caps and Underscores TextView tvUserName = (TextView) findViewById(R.id.tv_user_name); 

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

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

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

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

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