Je vois souvent m_
préfixe utilisé pour les variables ( m_World
, m_Sprites
...) dans les tutoriels, exemples et autres codes principalement liés au développement de jeux.
Pourquoi les gens ajoutent-ils le préfixe m_
aux variables ?
Je vois souvent m_
préfixe utilisé pour les variables ( m_World
, m_Sprites
...) dans les tutoriels, exemples et autres codes principalement liés au développement de jeux.
Pourquoi les gens ajoutent-ils le préfixe m_
aux variables ?
Lockheed Martin utilise un schéma de nommage à trois préfixes avec lequel il est très facile de travailler, surtout lorsqu'on lit le code des autres.
Scope Reference Type(*Case-by-Case) Type
member m pointer p integer n
argument a reference r short n
local l float f
double f
boolean b
Alors...
int A::methodCall(float af_Argument1, int* apn_Arg2)
{
lpn_Temp = apn_Arg2;
mpf_Oops = lpn_Temp; // Here I can see I made a mistake, I should not assign an int* to a float*
}
Prenez-le pour ce qu'il vaut.
Comme indiqué dans de nombreuses autres réponses, m_ est un préfixe qui désigne les variables membres. Il est/était couramment utilisé dans le monde du C++ et s'est propagé à d'autres langages également, y compris Java.
Dans un IDE moderne, c'est complètement redondant, car la coloration syntaxique indique clairement quelles sont les variables à utiliser. local et lesquels sont membres . Cependant, lorsque la coloration syntaxique est apparue à la fin des années 90, la convention existait depuis de nombreuses années et était fermement établie (du moins dans le monde du C++).
Je ne sais pas à quels didacticiels vous faites référence, mais je suppose qu'ils utilisent la convention en raison de l'un des deux facteurs suivants :
D'autres ont mentionné que cela signifie un membre de la classe. Qt est un Framework C++ populaire qui utilise cette notation et beaucoup de tutoriels C++ GUI utilisent cette notation. m_
. Vous pouvez voir presque tous leurs exemples utiliser m_
pour les membres de la classe. Personnellement, j'utilise m_
car il est plus court que this->
et est compact.
Pour compléter les réponses actuelles et comme la question n'est pas spécifique à une langue, certains projets C utilisent le préfixe m_
pour définir des variables globales spécifiques à un fichier - et g_
pour les variables globales qui ont une portée plus grande que le fichier dans lequel elles sont définies.
Dans ce cas, les variables globales définies avec le préfixe m_
doit être défini comme suit static
.
Voir Convention de codage EDK2 (une implémentation Open-Source de l'UEFI) pour un exemple de projet utilisant cette convention.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
3 votes
Voir fr.wikipedia.org/wiki/Hungarian_notation
26 votes
Avant de suivre aveuglément l'exemple de la notation hongroise, veuillez vérifier ce qu'est réellement la notation hongroise. Parce que nommer un int iCounter est tout simplement inutile. Mais nommer un int xAnnotationPos et yAnnotationPos est raisonnable. Utilisez la version sémantique.
0 votes
Parfois, les modules importés préfixent les fonctions et les variables afin que vous soyez moins susceptible de les écraser avec votre propre code. C'est une façon de "réserver" des noms pour un usage spécifique.
0 votes
Byte56 vous a donné une réponse. J'ai vu des outils qui s'appuient sur une convention de nommage telle que mVariable pour générer du code supplémentaire, de la documentation (oui) et automatiser certaines tâches redondantes sur certaines variables membres...
5 votes
Bien que la notation "hongroise" soit souvent méchamment tournée en dérision, la forme particulière de cette notation qui indique la portée des variables présente de réels avantages. En plus d'identifier la portée de la variable, elle empêche les collisions de noms, comme lorsqu'un local, un parm et un member ont tous la même intention, et donc le même nom "sémantique". Cela peut rendre la maintenance de grandes bases de code plus simple et moins sujette aux erreurs.
0 votes
Duplicata de Pourquoi les noms de variables commencent-ils souvent par la lettre "m" ?
19 votes
Il y a des arguments pour et contre toute norme de codage, mais la question demande clairement ce qui est
m_
Pourtant, la moitié des réponses ici sont des commentaires sur les raisons pour lesquelles chacun pense que son favori actuel est le meilleur.