Android id naming convention: minuscules avec underscore vs camel case
Je suis en train de programmer une application pour Android. Maintenant, ce que j'ai découvert, c'est que vous ne pouvez pas placer d'objets de ressource, disons une image dans le dossier drawable et le nommer comme "myTestImage.jpg". Cela vous donnera une erreur de compilateur puisque la syntaxe camel case n'est pas autorisée, Vous devrez donc la renommer comme " my_test_image.jpg".
Mais qu'en est-il des identifiants que vous définissez dans le fichier XML? Disons que vous avez la définition suivante
<TextView android:id="@+id/myTextViewFirstname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Firstname" />
Ceci est une définition valide, compile et fonctionne juste bien sur mon émulateur Android bien que-comme vous le voyez-je spécifie l'id dans la syntaxe de cas de chameau.
Maintenant, Les échantillons Android utilisent toujours des minuscules et des traits de soulignement. Est-ce juste une convention de nommage pour utiliser des minuscules avec un trait de soulignement pour les identifiants ou peut-il causer des problèmes sur le périphérique réel?
Thx
9 réponses
L'appareil ne se plaindra pas si vous utilisez des chameaux cas noms de code. Pour ma première application, j'ai écrit tous les identifiants dans camel-case parce que je pense qu'il semble mieux dans le code Java de cette façon, et cela fonctionne très bien.
Je change lentement d'avis sur camel-case, cependant, parce que vous vous retrouvez avec deux conventions de nommage différentes-par exemple:
// 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);
Moi aussi, je m'interroge sur les normes ici. Google est incohérent dans leurs exemples; parfois ils utilisent tous les minuscules, parfois ils insérez des traits de soulignement, et parfois ils utilisent camel-case.
Si vous regardez les champs android.R.id.*
, Vous remarquerez que tous sont dans camel-case. Donc, si les ID android sont écrits dans camel-case, je suppose que nous devons suivre cette convention:)
Je pense qu'il parle d'ID dans un fichier xml
.
Par exemple:
android:id="@+id/home_button"
Contre
android:id="@+id/HomeButton"
Je n'ai trouvé aucune convention ou directive à ce sujet, donc les développeurs de mon projet utilisent les deux méthodes indistinctement, ce qui est assez douloureux: (
Je pense qu'il est bon d'utiliser les toutes petites lettres avec des traits de soulignement.
Il suffit de regarder ceci (en ajoutant à ce que Daniel avait répondu)
// Camel Case TextView tvUserName = (TextView) findViewById(R.id.tvUserName);
// Small Caps and Underscores
TextView tvUserName = (TextView) findViewById(R.id.tv_user_name);
Dans ma propre expérience, j'ai tendance à être un peu confus de la convention camel case en xml car lorsque vous la liez à Java qui utilise également camel case (parce que c'est la norme), cela ressemble à un doppleganger.
Si vous regardez certains des exemples D'applications Googles tels que:
Https://github.com/google/iosched
Ils utilisent des traits de soulignement. Si.... peut-être que c'est comme ça que nous devrions le faire?
Les noms de fichiers Xml (qui sont utilisés dans le dossier drawable) doivent tous être séparés en minuscules par le caractère de soulignement _ car les noms de fichiers en majuscules ne sont pas pris en charge en xml.
Si le compilateur D'Android fait vraiment ce que vous dites restreindre le cas de chameau (ce qui semble plutôt étrange), alors vous devriez vous en tenir aux conventions établies.
Aller contre le grain ne causera que de la confusion inutile. Gardez les choses cohérentes dans tous les endroits où cela est possible.
Je pense que si nous utilisons la convention underscore pour l'id dans les fichiers xml et la convention camel case pour les champs de classe, Cela donnera une meilleure visibilité à chaque développeur pour distinguer les ID xml et les champs de classe.
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));
Tout d'abord, il N'y a pas une certaine norme pour définir laquelle est la plus valide mais j'ai quelques raisons de le prouver. Mon idée est raisonnable de garder L'id XML et la variable java dans le même nom exact avec la convention camel-case.
1 -) Il est facile d'atteindre la variable en recherchant le projet à la fois XML et java.
2 -) définition de la bibliothèque butterKnife
@BindView(R.id.infoTextView)
TextViewFont infoTextView;
Il est plus approprié de rester de cette façon.