Конвенции именования идентификаторов андроид: в нижнем регистре с подчеркиваниями и регистр



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



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



Thx

714   9  

9 ответов:

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

Я медленно меняю свое мнение на camel-case, хотя, потому что вы в конечном итоге с двумя различными соглашениями об именах - например:

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

Если вы посмотрите на android.R.id.* поля, вы заметите, что все они находятся в camel-case. Поэтому, если идентификаторы android написаны в camel-case, я думаю, мы должны следовать этой конвенции:)

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

например:

android:id="@+id/home_button"

и

android:id="@+id/HomeButton"

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

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

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

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

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

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

https://github.com/google/iosched

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

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

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

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

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

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 id и переменную java в том же самом имени с соглашением camel-case.

1 -) легко добраться до переменной, выполнив поиск проекта как на стороне XML, так и на стороне java.

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

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

это более правильно, чтобы держать в этом пути.

Comments

    Ничего не найдено.