Pourquoi la plupart des champs (membres de la classe) du didacticiel Android commencent-ils par `m`?

Je connais les règles du cas des chameaux, mais je suis confus avec cette règle. Qu’est ce que cela signifie? Je suis un développeur PHP. “Nous” utilisons les premières lettres des variables comme indication de type, comme “b” pour les booléens, “i” pour les nombres entiers, etc.

Est-ce que c’est un truc de Java? Est-ce que cela signifie mobile? mixte?

Cette notation provient des directives de style de code AOSP (Android Open Source Project) pour les consortingbuteurs :

Suivre les conventions d’affectation de noms de terrain

  • Les noms de champs non publics et non statiques commencent par m.
  • Les noms de champs statiques commencent par s.
  • Les autres champs commencent par une lettre minuscule.
  • Les champs finaux statiques publics (constantes) sont ALL_CAPS_WITH_UNDERSCORES.

Notez que le guide de style lié est destiné au code à consortingbuer au projet Open Source Android.

Ce n’est pas un guide de style pour le code des applications Android individuelles.

Un grand nombre de lignes direcsortingces de codage utilisent m pour les «membres» d’une classe. Ainsi, lorsque vous programmez, vous pouvez voir la différence entre les variables locales et les variables membres.

Quel est le préfixe m ?

m représente la variable membre ou membre de données. Utilisez le préfixe m pour les champs non publics et non statiques.

Quand utiliser?

 private Ssortingng mCityName; private float mTemperature; 

Quand ne pas utiliser?

 public static int mFirstNumber; public static final Ssortingng mDATABASE_NAME; 

Ce que je fais?

Personnellement, je ne l’utilise pas. Cela rend le code plus compliqué et chaotique la lisibilité. Si vous utilisez toujours Notepad pour le codage, je n’ai pas de mots, mais les IDE modernes sont capables de mettre en évidence et de colorier les variables membres et locales ou toute autre chose.

Conclusion

Utilisation? “Oui” ou “Non” est votre choix personnel.

Si ce sont des variables membres dans les classes, le «m» signifie «membre». Beaucoup de programmeurs Java le font, mais avec les IDE modernes, ce n’est pas nécessaire puisque vous avez la surbrillance, passez la souris sur les info-bulles, etc.

Selon le livre du code propre, ce n’est pas un code propre.

Vous n’avez pas besoin de préfixer les variables membres avec m . De plus, les gens apprennent rapidement à ignorer le préfixe ou le suffixe pour voir la partie significative du nom.

Je pense que les conventions de code utilisées sont très particulières. Je préfère nommer mes variables avec les préfixes suivants:

  • m – Variables de méthode
  • c – Variables de classe
  • p – Variables de paramètre

Mais je suppose que chaque programmeur a son propre style.

Si vous avez des problèmes comme

votre IDE pour générer des seters / getters et vous obtenez getmName () et setmName ()

N’oubliez pas de faire ensuite ( Paramètres / Editeur / Style de code / Java / Génération de code ):

entrer la description de l'image ici

Comme mentionné précédemment, il est conçu pour différentes variables. Mais c’est aussi très utile pour la génération de code. Si vous appuyez sur “Alt + Insert”, vous obtiendrez des fenêtres pour les propriétés de génération de code les plus courantes. Si vous voulez générer une méthode “get” pour votre variable, vous obtiendrez.

 public class Foo{ private int bar; public int getBar(){ return this.bar; } public void setBar(int bar){ this.bar = bar; } } 

Mais si vous déclarez “m, s”, vous obtiendrez:

 public class Foo{ private int mBar; public int getBar(){ return mBar; } public void setBar(int bar){ mBar = bar; } } 

Il sera automatiquement généré et “m” ou “s” supprimé de votre constructeur, récupérez, définissez le nom des méthodes. Après cela, “get” et “set” pour le champ seront générés sans “m”. Andoroid Fle-> Setting-> Style de Code-> Java-> Code Genenretion. Et faire comme sur une photo. Peut-être que ça aidera. Désolé pour mon eng. Configurer Android

Pour prouver que vous ne devez absolument pas traiter cette convention pour nommer des variables dans votre code, je passe une capture d’écran d’un Android Studio parent ci-dessous.

Trouvez les variables à l’intérieur d’un object spécialement sortingées pour placer les variables m inférieures à vos variables natives . Donc, en les nommant dans votre code avec le préfixe “m”, vous les cachez dans un tas de vous-même .

entrer la description de l'image ici

Il semble que certains ingénieurs d’Android / Google aient préféré “lancer” des variables membres avec le mot “m”.

Maintenant, cette règle est imposée aux développeurs des entresockets qui ne sont pas des consortingbuteurs AOSP, simplement parce que cette page est considérée comme une règle de style de code Android. Il y a peu ou pas d’avantage dans cette règle. Google devrait envisager de le supprimer. Sinon, veuillez spécifier que pour les applications Android, lesquelles des règles de style de code sont facultatives.

S’il vous plaît append votre commentaire de soutien à cette pétition pour supprimer la règle https://code.google.com/p/android/issues/detail?id=226814

Pour plus de lisibilité, ne plus utiliser (m pour les variables membres, s pour les champs statiques) si vous utilisez un IDE moderne (Android Studio). Android Studio peut différencier ceux sans append de m ou de s.

On peut également dire que cela signifie “mien”, comme dans la classe / instance dit “cette variable est mienne et personne d’autre ne peut y arriver”. Différent de statique qui, bien qu’il puisse être disponible uniquement pour la classe, est partagé par toutes les instances de cette classe. Comme si vous dessiniez des cercles, vous auriez besoin de savoir quelle est la taille du rayon de chaque cercle.

  private double mRadius; 

mais en même temps vous voulez un compteur pour suivre tous les cercles, à l’intérieur de la classe de cercle que vous pourriez avoir

  private static int sCircleCount; 

et puis il suffit d’avoir des membres statiques pour augmenter et diminuer le nombre de cercles que vous avez actuellement.

Le seul avantage que j’ai trouvé dans ce style de code, c’est que lorsque je saisis une référence à une variable, je sais que je peux taper “m” pour voir uniquement les variables membres.

Suivre les conventions de nommage des champs

 Non-public, non-static field names start with m. Static field names start with s. Other fields start with a lower case letter. Public static final fields (constants) are ALL_CAPS_WITH_UNDERSCORES. 

Par exemple:

 public class MyClass { public static final int SOME_CONSTANT = 42; public int publicField; private static MyClass sSingleton; int mPackagePrivate; private int mPrivate; protected int mProtected; }