Convenons d'abord que ALL UPPERCASE est une horreur et doit être minimisé.
En C et C ++, il est donc utilisé comme convention pour les macros, et les macros uniquement, car les macros sont tout aussi laides, pour ne pas dire mal.
Les premiers C n'avaient pas const, donc les constantes devaient être exprimées sous forme de macros. De plus, à ces débuts, les programmes étaient beaucoup plus courts, de sorte que les pratiques qui étaient mauvaises aujourd'hui pouvaient être utilisées (par exemple, l'IIRC Brian Kernighan a écrit du code avec beaucoup de macros non majuscules). Et aussi, à cette époque, les claviers qui n'avaient pas de lettres minuscules existaient; J'en ai utilisé un, sur l'ordinateur norvégien Tandberg EC-10, vers 1980 ou 1979, je crois.
Ainsi, Java a repris la convention en majuscules pour les constantes du début C. Pendant ce temps, et peut-être même avant (je ne suis pas sûr de la chronologie ici), C a obtenu des constantes. Cependant, bien que certains / nombreux programmeurs C étaient coincés dans la convention précédente par nécessité de constantes comme macros majuscules, les programmeurs C ++ étaient plus sensés.
Le gros problème de nos jours est que les gens apprennent d'abord Java ou C (avec les conventions du moyen âge), puis viennent en C ++, emportant avec eux cette fausse convention majuscule.
Donc,
int const answer = 42; // Nice, good, OK.
const int ANSWER = 0x2A; // Ouch!
#define COMPANYNAME_ANSWER 052 // Oh kill me, please.
Eh bien, vous auriez pu penser que j'ai mentionné des claviers en majuscules uniquement pour plaisanter. Oh non. Parce qu'il s'agit simplement de la limitation technologique la plus ancienne et la plus archaïque qui a conduit aux conventions de dénomination, ou du moins affecté à quel point elles semblent fausses / correctes. Ensuite, il y a eu le problème de la transmission série 7 bits, qui a provoqué des problèmes correspondants avec les codes de caractères (encodages de caractères de newspeak) utilisés, ce qui signifiait que vous deviez vous limiter aux lettres de l'alphabet anglais, de A à Z.
En fait, je recommande de continuer à le faire. Voilà où nous en sommes! Nous ne sommes pas allés plus loin.
À l'heure actuelle, à partir de 2011, le C ++ standard prend en charge Unicode général dans les noms (et il le fait depuis 1998), contrairement aux implémentations C ++ réelles. En particulier, le compilateur g ++ a un caractère national contesté. Elle découle de cette limitation technologique des âges sombres.
Donc,
double blueberryJamViscosity = 0.0; // OK
double blåbærsyltetøyViskositet = 0.0; // Ouch!
Enfin, au sujet des caractères de soulignement par rapport aux lettres majuscules entrecoupées,
- Réservez un formulaire facilement reconnaissable pour les noms de type.
- Réservez ALL UPPERCASE pour les macros.
- Être cohérent.
Je pense que c'est vraiment, sauf pour les règles comme "généralement éviter le nom à une seule lettre sauf pour (boucle, paramètre de modèle, bla bla)" et "éviter d'utiliser l, facilement confondu avec 1" et "éviter les majuscules O, facilement confondu avec 0 ". Évitez également d'utiliser des noms réservés, comme commencer par un trait de soulignement suivi de majuscules, contenant deux traits de soulignement successifs, ou commencer par un trait de soulignement et se trouver dans l'espace de noms global.
Santé et hth