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

80
demandé sur ThinkingStiff 2009-12-02 14:17:37

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.

80
répondu Daniel Lew 2009-12-02 15:30:11

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

12
répondu Kiril Aleksandrov 2014-02-19 11:00:08

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: (

9
répondu Javier Martínez 2015-05-20 15:49:39

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.

4
répondu Rogene Sagmit 2013-06-05 06:32:34

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?

4
répondu Micro 2016-04-30 16:01:40

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.

1
répondu Paul 2010-10-28 21:46:07

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.

0
répondu Brock Woolf 2009-12-02 11:21:43

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.

0
répondu Yasir Ali 2016-02-23 11:20:29
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.

0
répondu Samet öztoprak 2018-03-28 14:00:51