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

В настоящее время я программирую приложение для Android. Теперь я выяснил, что вы не можете размещать объекты ресурсов, скажем, изображение в выпадающей папке и называть его "myTestImage.jpg". Это даст вам ошибку компилятора, так как синтаксис case верблюда не разрешен, поэтому вам нужно будет переименовать его как "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 всегда используют строчные буквы и подчеркивание. Это просто соглашение об именах для использования нижнего регистра с подчеркиванием для идентификатора или может вызвать проблемы на реальном устройстве?

спасибо

Ответ 1

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

Ответ 2

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

Ответ 3

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

например:

android:id="@+id/home_button"

против

android:id="@+id/HomeButton"

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

Ответ 4

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

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

  // 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.

Ответ 5

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

https://github.com/google/iosched

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

Ответ 6

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

Ответ 7

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

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

Ответ 8

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

Ответ 9

android:id="@+id/frag_account_button"
frag_account_button = ((ListView)view.findViewById(R.id.frag_account_button));

android:id="@+id/fragAccountButton"
fragAccountButton = ((ListView)view.findViewById(R.id.fragAccountButton));

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

  1. Получить переменную легко, выполнив поиск проекта как на XML, так и на стороне Java.

  2. определение библиотеки butterKnife

    @BindView (R.id.infoTextView) TextViewFont infoTextView;

Правильнее продолжать таким образом.