Pourquoi la plupart des champs (membres de la classe) dans le tutoriel Android commencent par `m`?


Je connais les règles de l'affaire des chameaux, mais je suis confus avec cette règle m. Qu'est ce que cela signifie? Je suis un développeur PHP. "Nous" utilisons les premières lettres de variables comme indication de type, comme 'b' pour booléen, 'i' pour nombre entier et ainsi de suite.

Est-ce que 'm' est une chose Java? Est-ce que cela signifie mobile? mixte?



Answers



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

Suivez les conventions de dénomination de champ

  • 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 finals statiques publics (constantes) sont ALL_CAPS_WITH_UNDERSCORES.

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

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




Un grand nombre de lignes 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 signifie membre membre ou membre de données. Utilisez le préfixe m pour les champs non publics et non statiques.

Quand utiliser?

private String mCityName;
private float mTemperature;

Quand ne pas utiliser?

public static int mFirstNumber;
public static final String mDATABASE_NAME;

Ce que je fais?

Personnellement, je ne l'utilise pas. Cela rend le code plus compliqué et chaos la lisibilité. Si vous utilisez encore Notepad pour le codage, je n'ai pas de mots, mais les IDE modernes sont capables de surligner et colorier les variables membres et locales ou n'importe quoi d'autre.

Conclusion

Utilisation? "Oui" ou "Non" est votre choix personnel.




S'il s'agit de variables membres dans les classes, le 'm' signifie 'membre'. Beaucoup de programmeurs Java le font, même si avec les IDE modernes, ce n'est pas nécessaire puisque vous avez des surlignages, des info-bulles sur la souris, etc.




Selon le livre Clean Code, ce n'est pas un code propre.

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




Je pense que c'est très individuel quelles conventions de code sont utilisées. 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ètres

Mais je suppose que chaque programmeur a son propre style.




Comme mentionné précédemment, il est conçu pour différentes variables. Mais aussi, c'est 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érations de code les plus courantes. Si vous voulez générer la 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, get, nomme les méthodes. Après ce "get" et "set" pour le champ sera généré sans "m". Andoroid Fle-> Réglage-> Code Style-> Java-> Code Génération. Et faites comme sur une photo. Peut-être que ça va aider. Désolé pour mon eng. Configurer Android




Il semble avoir été une préférence personnelle de certains ingénieurs Android / Google début de commencer les variables membres avec «m» et donc ils l'ont recommandé.

Cette règle est maintenant imposée aux développeurs de sociétés qui ne sont pas des contributeurs AOSP, simplement parce que cette page est considérée comme des règles Android Style Style. Il y a peu ou pas de bénéfice dans cette règle. Google devrait envisager de le supprimer. Sinon, veuillez préciser que pour les applications Android, les règles de style de code sont facultatives.

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




En termes de lisibilité, ne devrait plus être utilisé (m pour les variables membres, s pour les champs statiques) si vous utilisez un IDE moderne (Android Studio). Android Studio peut faire la différence entre ceux sans ajouter m ou s.




On peut également dire que cela signifie "à moi", comme dans la classe / instance, il est dit "Cette variable est à moi et personne d'autre ne peut y arriver". Différent de statique, même s'il est disponible uniquement pour la classe, il est partagé par toutes les instances de cette classe. Comme si vous dessinez des cercles, vous devez connaître la taille du rayon de chaque cercle

    private double mRadius;

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

    private static int sCircleCount;

Il suffit ensuite d'avoir des membres statiques pour augmenter et diminuer le nombre de cercles que vous avez actuellement.




Pour prouver que vous ne devriez certainement pas traiter cette convention pour nommer les variables dans votre code, je passe une capture d'écran d'un parent Android Studio ci-dessous.

Trouvez les variables à l'intérieur d'un objet spécialement triées pour mettre les variables m plus bas que 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 .