Actualmente estoy programando una aplicación para Android. Ahora lo que descubrí es que no puedes colocar objetos de recursos, digamos, una imagen en la carpeta dibujable y nombrarla como "myTestImage.jpg". Esto le dará un error del compilador, ya que la sintaxis de mayúsculas y minúsculas no está permitida, por lo que tendrá que cambiarle el nombre como "my_test_image.jpg".
Pero, ¿qué pasa con los identificadores que define en el archivo XML? Digamos que tiene la siguiente definición
<TextView android:id="@+id/myTextViewFirstname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Firstname" />
Esta es una definición válida, se compila y funciona bien en mi emulador de Android aunque, como puede ver, estoy especificando la identificación en la sintaxis del caso camel.
Ahora, las muestras de Android siempre usan minúsculas y guiones bajos. ¿Es esto solo una convención de nomenclatura para usar minúsculas con subrayado para las identificaciones o puede causar problemas en el dispositivo real?
Gracias
AppBaseTheme
yAppTheme
.Si miras los
android.R.id.*
campos, notarás que todos están en caja de camello. Entonces, si los identificadores de Android están escritos en camel-case, supongo que tenemos que seguir esta convención :)fuente
widget_frame
campo [ developer.android.com/reference/android/R.id.html#widget_frame] también en losandroid.R.id.*
campos. en este campo de uso Google subrayan no camello de los casos lo tanto, su conclusión acerca de camello caso convención es correcto elegir para la convención de identificación puede ser falsoCreo que es bueno si usamos todas las letras minúsculas con guiones bajos.
Solo mira esto (agregando a lo que Daniel había respondido)
// Small Caps and Underscores TextView tvUserName = (TextView) findViewById(R.id.tv_user_name);
en mi propia experiencia, tiendo a confundirme un poco con la convención de caso camel en xml porque cuando lo vincula a Java, que también usa caso camel (porque es el estándar), parece un doppleganger.
fuente
Creo que si usamos la convención de subrayado para la identificación en archivos xml y la convención de caso camel para los campos de clase, entonces todos los desarrolladores tendrán una mejor visibilidad para distinguir entre los identificadores xml y los campos de clase.
fuente
Si observa algunas de las muestras de aplicaciones de Google, como:
https://github.com/google/iosched
Usan guiones bajos. Entonces ... ¿tal vez así es como deberíamos hacerlo?
fuente
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));
En primer lugar, no existe un estándar seguro para definir cuál es más adecuado, pero tengo mi propia idea al respecto. Mi idea es razonable para mantener la identificación XML y la variable java exactamente con el mismo nombre con la convención camel-case.
Es fácil llegar a la variable buscando el proyecto tanto en XML como en java.
Definición de biblioteca butterKnife
@BindView (R.id.infoTextView) TextViewFont infoTextView;
Es más apropiado mantenerlo así.
fuente
Los nombres de archivo xml (que es lo que se usa en la carpeta dibujable) deben estar todos en minúscula separados por el carácter de subrayado _ ya que los nombres de archivo en mayúsculas no son compatibles con xml.
fuente
Si el compilador de Android realmente está haciendo lo que dices al restringir el caso de camello (que parece bastante extraño), entonces debes ceñirte a las convenciones establecidas.
Ir en contra de la corriente solo provocará una confusión innecesaria. Mantenga las cosas consistentes en todos los lugares donde sea posible.
fuente