web-dev-qa-db-fra.com

Convention de nommage des identifiants Android: minuscules avec soulignement vs cas de chameau

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 ressources, disons une image dans le dossier pouvant être dessiné et le nommer comme "myTestImage.jpg". Cela vous donnera une erreur de compilation car la syntaxe de cas de chameaux n'est pas autorisée, il vous faudra donc la renommer ainsi "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 parfaitement sur mon émulateur Android bien que - comme vous le voyez - je spécifie l'id dans la syntaxe de la casse du chameau.

Maintenant, les exemples Android utilisent toujours des minuscules et des caractères de soulignement. S'agit-il simplement d'une convention de dénomination consistant à utiliser des minuscules avec un tiret bas pour l'identifiant ou cela peut-il causer des problèmes sur le périphérique réel?

THX

80
Juri

L'appareil ne se plaindra pas si vous utilisez des noms d'identifiants de chameaux. Pour ma première application, j'ai écrit tous les identifiants dans camel-case car je pense que cela semble mieux dans le code Java de cette façon, et cela fonctionne très bien.

Cependant, je change lentement d'avis sur les cas de chameaux, car vous vous retrouvez avec deux conventions de dénomination 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 uniquement des minuscules, parfois ils insèrent des traits de soulignement et parfois des chameaux.

81
Daniel Lew

Si vous regardez les champs Android.R.id.*, vous remarquerez qu'ils sont tous en camel case. Donc, si les identifiants Android sont écrits en camel-case, je suppose que nous devons suivre cette convention :)

12
Kiril Aleksandrov

Je pense qu'il parle des identifiants dans un fichier xml.

par exemple:

Android:id="@+id/home_button"

versus

Android:id="@+id/HomeButton"

Je n'ai trouvé aucune convention ni directive à ce sujet. Les développeurs de mon projet utilisent donc indifféremment les deux méthodes, ce qui est très pénible :(

9
Javier Martínez

Si vous regardez des exemples d'applications Googles tels que:

https://github.com/google/iosched

Ils utilisent des traits de soulignement. Alors… peut-être que c'est ainsi que nous devrions le faire?

4
Micro

je pense que c'est bien si nous utilisons toutes les petites lettres avec des tirets bas.

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);

selon ma propre expérience, je suis un peu confus avec la convention XML relative aux cas de chameaux, car lorsque vous le liez à Java, qui utilise également le cas de chameaux (car c’est le standard), cela ressemble à un suspect.

4
Rogene Sagmit

les noms de fichier xml (utilisés dans le dossier pouvant être dessiné) doivent être en minuscules, séparés par le caractère de soulignement _, car les noms de fichier en majuscules ne sont pas pris en charge en xml.

1
Paul
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’existe pas de norme permettant de définir celle qui est la plus valable, mais j’ai quelques raisons de prouver que . Mon idée est raisonnable de conserver id XML et variable Java dans le même nom avec camel convention.

1-) il est facile d'accéder à la variable en recherchant le projet à la fois en XML et en Java.

2-) Définition de la bibliothèque butterKnife

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

il est plus approprié de rester dans cette voie. 

0
Samet öztoprak

Je pense que si nous utilisons la convention de soulignement pour les identifiants dans les fichiers xml et la convention de casse-chameau pour les champs de classe, cela donnera une meilleure visibilité à chaque développeur pour faire la distinction entre les identificateurs xml et les champs de classe.

0
Yasir Ali

Si le compilateur Android fait vraiment ce que vous dites en restreignant le chameau (ce qui semble plutôt étrange), vous devriez vous en tenir aux conventions établies.

Aller à contre-courant ne fera que créer une confusion inutile. Garder les choses cohérentes dans tous les endroits où possible.

0
Brock Woolf