Obecnie programuję aplikację na Androida. Teraz odkryłem, że nie można umieścić obiektów zasobów, powiedzmy, obrazu w folderze do rysowania i nazwać go „myTestImage.jpg”. Spowoduje to błąd kompilatora, ponieważ składnia wielkości liter wielbłąda jest niedozwolona, więc musisz zmienić jej nazwę na „my_test_image.jpg”.
Ale co z identyfikatorami zdefiniowanymi w pliku XML. Powiedzmy, że masz następującą definicję
<TextView android:id="@+id/myTextViewFirstname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Firstname" />
To jest poprawna definicja, kompiluje się i działa dobrze na moim emulatorze Androida, chociaż - jak widzisz - określam identyfikator w składni wielbłąda.
Teraz próbki Androida zawsze używają małych liter i podkreślenia. Czy jest to tylko konwencja nazewnictwa polegająca na używaniu małych liter z podkreśleniem dla identyfikatorów, czy może to powodować problemy na prawdziwym urządzeniu?
Dzięki
AppBaseTheme
iAppTheme
.Jeśli spojrzysz na
android.R.id.*
pola, zauważysz, że wszystkie są w skrzynce wielbłąda. Więc jeśli identyfikatory Androida są zapisane w przypadku wielbłąda, myślę, że musimy przestrzegać tej konwencji :)źródło
widget_frame
pole [ developer.android.com/reference/android/R.id.html#widget_frame] również wandroid.R.id.*
polach. w tym polu Google używa podkreślenia, a nie przypadku wielbłąda Więc twój wniosek dotyczący konwencji wielbłąda jest słuszny Wybór konwencji ID może być fałszywymyślę, że dobrze będzie, jeśli użyjemy wszystkich małych liter z podkreśleniami.
Po prostu spójrz na to (dodając do tego, co odpowiedział Daniel)
// Small Caps and Underscores TextView tvUserName = (TextView) findViewById(R.id.tv_user_name);
z własnego doświadczenia mam tendencję do trochę pomieszania z konwencją wielkości wielbłądów w xml, ponieważ kiedy połączysz ją z Javą, która również używa wielbłąda (ponieważ jest to standard), wygląda to jak doppleganger.
źródło
Myślę, że jeśli użyjemy konwencji podkreślenia dla identyfikatorów w plikach xml i konwencji wielbłądów dla pól klas, zapewni to każdemu deweloperowi lepszą widoczność w rozróżnieniu identyfikatorów xml i pól klas.
źródło
Jeśli spojrzysz na niektóre przykłady aplikacji Google, takie jak:
https://github.com/google/iosched
Używają podkreślenia. Więc ... może tak powinniśmy to robić?
źródło
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));
Po pierwsze, nie ma określonego standardu, który pozwoliłby określić, który z nich jest bardziej właściwy, ale mam na to swój własny pomysł. Mój pomysł jest rozsądny, aby zachować identyfikator XML i zmienną java dokładnie o tej samej nazwie, zgodnie z konwencją wielbłądów.
Dostęp do zmiennej jest łatwy, wyszukując projekt zarówno po stronie XML, jak i java.
Definicja biblioteki butterKnife
@BindView (R.id.infoTextView) TextViewFont infoTextView;
W ten sposób lepiej jest zachować.
źródło
Nazwy plików XML (które są używane w folderze do rysowania) muszą być wszystkie zapisane małymi literami, oddzielone znakiem podkreślenia _, ponieważ nazwy plików pisane wielkimi literami nie są obsługiwane w formacie XML.
źródło
Jeśli kompilator Androida naprawdę robi to, co mówisz, ograniczając wielkość wielbłąda (co wydaje się dość dziwne), powinieneś trzymać się ustalonych konwencji.
Podążanie pod prąd spowoduje tylko niepotrzebne zamieszanie. Utrzymuj spójność we wszystkich możliwych miejscach.
źródło