Concordiamo innanzitutto che TUTTO IL MAIUSCOLO è un pugno nell'occhio e dovrebbe essere ridotto al minimo.
In C e C ++ è quindi usato come convenzione per le macro e solo per le macro, perché le macro sono ugualmente brutte, per non dire male.
I primi C non avevano const, quindi le costanti dovevano essere espresse come macro. Inoltre, in quei primi programmi i programmi erano molto più brevi, in modo che le pratiche oggi non buone potessero essere usate (ad es. IIRC Brian Kernighan ha scritto codice con molte macro non maiuscole). Inoltre, a quei tempi esistevano tastiere che non avevano lettere minuscole; Ne ho usato uno, sul computer norvegese Tandberg EC-10, circa 1980 o 1979, credo.
Quindi, Java raccolse la convenzione maiuscola per le costanti dai primi anni del C. Nel frattempo, e forse anche prima (non sono sicuro della cronologia qui), C ottenne costanti. Tuttavia, mentre ovviamente alcuni / molti programmatori C erano bloccati nella precedente convenzione per necessità di costanti come macro maiuscole, i programmatori C ++ erano più sensibili.
Il grande problema al giorno d'oggi è quando le persone vengono prima insegnate a Java, o prima a C (con convenzioni dal Medioevo), e poi arrivano al C ++, prendendo con loro quella pessima convenzione maiuscola.
Così,
int const answer = 42; // Nice, good, OK.
const int ANSWER = 0x2A; // Ouch!
#define COMPANYNAME_ANSWER 052 // Oh kill me, please.
Beh, potresti aver pensato di aver citato solo tastiere maiuscole. Oh no Perché questa è semplicemente la più antica, la più arcaica limitazione tecnologica che ha guidato le convenzioni di denominazione, o almeno ha influenzato quanto sembravano sbagliate / giuste. Successivamente, c'era il problema della trasmissione seriale a 7 bit, che causava corrispondenti problemi con i codici carattere (codifiche di caratteri di newspeak) utilizzati, il che significava che dovevi limitarti alle lettere dell'alfabeto inglese, dalla A alla Z.
In realtà consiglio di farlo ancora. Ecco dove siamo! Non abbiamo oltre.
Al momento, a partire dal 2011, lo standard C ++ supporta Unicode generale nei nomi (e lo fa dal 1998), mentre le attuali implementazioni C ++ no. In particolare il compilatore g ++ è un personaggio nazionale sfidato. Deriva da quel limite tecnologico dell'età oscura.
Così,
double blueberryJamViscosity = 0.0; // OK
double blåbærsyltetøyViskositet = 0.0; // Ouch!
Infine, in materia di caratteri di sottolineatura rispetto a lettere maiuscole intervallate,
- Prenota un modulo facilmente riconoscibile per i nomi dei tipi.
- Prenota TUTTO MAIUSCOLO per le macro.
- Sii coerente.
Penso che sia, in realtà, ad eccezione di regole come "generalmente evita il nome di una sola lettera tranne (loop, template param, blah blah)", e "evita di usare l, facilmente confuso con 1" ed "evita maiuscole O, facilmente confuso con 0 ". Inoltre, ovviamente, evita di usare nomi riservati come iniziare con il carattere di sottolineatura seguito da caratteri maiuscoli, contenente due caratteri di sottolineatura successivi, o iniziare con il carattere di sottolineatura e trovarti nello spazio dei nomi globale.
Saluti e hth