Lassen Sie uns zunächst zustimmen, dass ALL UPPERCASE ein Dorn im Auge ist und minimiert werden sollte.
In C und C ++ wird es daher als Konvention für Makros und nur für Makros verwendet, da Makros ebenso hässlich sind, um nicht zu sagen böse.
Frühes C hatte keine Konstante, also mussten Konstanten als Makros ausgedrückt werden. In jenen frühen Tagen waren die Programme auch viel kürzer, so dass die heute unguten Praktiken angewendet werden konnten (z. B. schrieb IIRC Brian Kernighan Code mit vielen Nicht-Großbuchstaben-Makros). Zu jener Zeit gab es Tastaturen ohne Kleinbuchstaben. Ich habe einen solchen auf dem norwegischen Tandberg EC-10-Computer verwendet, ungefähr 1980 oder 1979, glaube ich.
Java hat also die Konvention für Konstanten in Großbuchstaben von Anfang C aufgegriffen. In der Zwischenzeit und vielleicht sogar vorher (ich bin mir der Chronologie hier nicht sicher) hat C Konstanten bekommen. Während natürlich einige / viele C-Programmierer in der früheren Konvention der Notwendigkeit von Konstanten als Großbuchstabenmakros feststeckten, waren C ++ - Programmierer vernünftiger.
Das große Problem besteht heutzutage darin, dass den Menschen zuerst Java oder C (mit Konventionen aus dem Mittelalter) beigebracht wird und sie dann zu C ++ kommen und diese unlauteren Konventionen in Großbuchstaben mitnehmen.
So,
int const answer = 42; // Nice, good, OK.
const int ANSWER = 0x2A; // Ouch!
#define COMPANYNAME_ANSWER 052 // Oh kill me, please.
Nun, Sie hätten vielleicht gedacht, ich hätte im Scherz nur Tastaturen mit Großbuchstaben erwähnt. Ach nein. Denn das ist nur die älteste, archaischste Technologie-Einschränkung, die Namenskonventionen hervorgerufen oder zumindest beeinflusst hat, wie falsch / richtig sie ausgesehen haben. Als nächstes gab es das Problem der seriellen 7-Bit-Übertragung, das entsprechende Probleme mit den verwendeten Zeichencodes (Newspeak-Zeichencodierungen) verursachte, was bedeutete, dass Sie sich auf die Buchstaben des englischen Alphabets A bis Z beschränken mussten.
Eigentlich empfehle ich das immer noch zu tun. Da sind wir! Wir sind nicht weiter gekommen.
Gegenwärtig unterstützt Standard-C ++ ab 2011 allgemeines Unicode in Namen (und dies seit 1998), während dies bei tatsächlichen C ++ - Implementierungen nicht der Fall ist. Insbesondere der g ++ Compiler ist national geprägt. Es stammt aus dieser technologischen Einschränkung des dunklen Zeitalters.
So,
double blueberryJamViscosity = 0.0; // OK
double blåbærsyltetøyViskositet = 0.0; // Ouch!
Schließlich zum Thema Unterstriche im Vergleich zu eingestreuten Großbuchstaben:
- Reservieren Sie ein leicht zu erkennendes Formular für Typnamen.
- Reservieren Sie ALLE GROSSBUCHSTABEN für Makros.
- Seien Sie konsequent.
Ich denke, das ist es wirklich, abgesehen von Regeln wie "Vermeiden Sie generell Namen mit einem Buchstaben außer (Schleife, Template-Parameter, bla bla)" und "Vermeiden Sie die Verwendung von l, leicht zu verwechseln mit 1" und "Vermeiden Sie Großbuchstaben O, leicht zu verwechseln" mit 0 ". Vermeiden Sie es natürlich auch, reservierte Namen zu verwenden, z. B. mit einem Unterstrich gefolgt von einem Großbuchstaben, der zwei aufeinanderfolgende Unterstriche enthält, oder mit einem Unterstrich zu beginnen und sich im globalen Namespace zu befinden.
Prost & Hth