Соглашение об именовании для Android: нижний регистр с подчеркиванием против верблюжьего - PullRequest
81 голосов
/ 02 декабря 2009

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

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

Thx

Ответы [ 9 ]

82 голосов
/ 02 декабря 2009

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

13 голосов
/ 19 февраля 2014

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

10 голосов
/ 24 августа 2011

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

например:

android:id="@+id/home_button"

против

android:id="@+id/HomeButton"

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

4 голосов
/ 30 апреля 2016

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

https://github.com/google/iosched

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

4 голосов
/ 05 июня 2013

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

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

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

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

1 голос
/ 23 февраля 2016

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

1 голос
/ 29 октября 2010

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

0 голосов
/ 28 марта 2018
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;

Правильнее придерживаться этого.

0 голосов
/ 02 декабря 2009

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

Если идти против зерна, это только приведет к ненужной путанице. Сохраняйте согласованность во всех местах, где это возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...