Évitez les variables publiques, sauf pour les classes qui sont essentiellement des structs de style C. Ce n'est tout simplement pas une bonne pratique à adopter.
Une fois que vous avez défini l'interface de la classe, il se peut que vous ne puissiez jamais la modifier (à part la compléter), car les gens se baseront sur elle et s'y fieront. Rendre une variable publique signifie que vous devez disposer de cette variable, et que vous devez vous assurer qu'elle possède ce dont l'utilisateur a besoin.
Maintenant, si vous utilisez un getter, vous promettez de fournir certaines informations, qui sont actuellement conservées dans cette variable. Si la situation change, et que vous préférez ne pas maintenir cette variable en permanence, vous pouvez modifier l'accès. Si les exigences changent (et j'ai vu des changements d'exigences assez étranges), et que vous avez surtout besoin du nom qui est dans cette variable mais parfois de celui qui est dans cette variable, vous pouvez simplement changer le getter. Si vous rendiez la variable publique, vous seriez coincé avec elle.
Cela n'arrivera pas toujours, mais je trouve beaucoup plus facile d'écrire un getter rapide que d'analyser la situation pour voir si je regretterais de rendre la variable publique (et risquer de me tromper plus tard).
Rendre les variables membres privées est une bonne habitude à prendre. Tout magasin qui a des normes de code va probablement interdire de rendre publique une variable membre occasionnelle, et tout magasin qui a des revues de code va probablement vous critiquer pour cela.
Chaque fois que cela n'a pas d'importance pour la facilité d'écriture, prenez l'habitude d'être plus sûr.
0 votes
Duplicata de stackoverflow.com/questions/737409/ ?
0 votes
Soit dit en passant, il est plus courant d'utiliser un seul trait de soulignement en tête pour les variables membres en C++.
1 votes
Je pense également que le trait de soulignement à la fin est un peu gênant, mais c'est ce que j'ai vu être utilisé dans le C++ Faq Lite.
0 votes
Vous trouverez ci-dessous une réponse assez complète sur l'utilisation des caractères de soulignement en C++. stackoverflow.com/questions/228783/
9 votes
@MartinBeckett Le soulignement simple est peut-être courant, mais en tant que personne malvoyante, je peux vous dire qu'il est pénible à lire. Les IDE adorent souligner des choses (erreurs, orthographe, etc.) et le soulignement est complètement masqué par cette "utilité". À la communauté du codage dans son ensemble, entendez-nous, nous les aveugles, et mettez un symbole
m_
au lieu de_
.0 votes
@WesMiller, merci, je n'y avais jamais pensé. Bien que les IDE modernes permettent un style local. Nous venons d'adopter les tirets bas (suivant une norme) et ils sont mauvais lorsqu'il s'agit de pointeur_-> ou d'élément_[i].
0 votes
Je déteste quand les gens mettent des traits de soulignement en tête ou
m_
en Javascript et Java. Les gens semblent oublier que ce sont les solutions les moins inélégantes aux inconvénients du C++ (par exemple, en Java, les champs et les méthodes peuvent avoir le même nom).0 votes
@WesMiller Je trouve tous les soulignés difficiles à lire aussi, malgré une vision décente. Je n'ai jamais trouvé de code plus difficile à lire que certaines bibliothèques C++ standard.
1 votes
C'est parce que vous regardez au mauvais endroit. Les bibliothèques standard ne sont pas censées être des exemples de joli code ; elles sont seulement censées être travail code. Et c'est là que le bât blesse. Les auteurs de Stdlib ont d'utiliser des noms de variables laids, surtout dans le cas des modèles, car ils doivent s'assurer que leurs identifiants ne sont pas interférés par les utilisateurs, afin que leur code s'exécute comme prévu (si l'utilisateur suit la norme). C'est un exemple de la raison pour laquelle les identifiants contenant des doubles tirets bas ou des combinaisons particulières de tirets bas en tête sont réservés à l'implémentation.