Prima ammettiamo che TUTTA MAIUSCOLA è un pugno nell'occhio e che dovrebbe essere ridotto al minimo.
In C e C ++ è quindi usato come convenzione per macro e solo macro, perché le macro sono ugualmente brutte, per non dire malvagie.
La prima C non aveva const, quindi le costanti dovevano essere espresse come macro. Inoltre, in quei primi tempi i programmi erano molto più brevi, così che le pratiche oggi non buone potevano essere utilizzate (ad esempio IIRC Brian Kernighan ha scritto il codice con molte macro non maiuscole). Inoltre, a quei tempi esistevano tastiere che non avevano lettere minuscole; Ne ho usato uno di questi, sul computer norvegese Tandberg EC-10, circa il 1980 o il 1979, penso che fosse.
Quindi, Java raccolse la convenzione maiuscola per le costanti dalla prima C. Nel frattempo, e forse anche prima (non sono sicuro della cronologia qui), C ottenne delle costanti. Tuttavia, benché alcuni / molti programmatori C siano rimasti bloccati nella convenzione precedente per necessità delle costanti come macro in lettere maiuscole, i programmatori C ++ erano più sensibili.
Il grosso problema al giorno d'oggi è quando alle persone viene insegnato prima Java, o C (con le convenzioni del medioevo) prima, e poi vieni in C ++, prendendo con loro quella convenzione volgare e sporca.
int const answer = 42; // Nice, good, OK.
const int ANSWER = 0x2A; // Ouch!
#define COMPANYNAME_ANSWER 052 // Oh kill me, please.
Potresti aver pensato di menzionare le tastiere maiuscole per scherzo. Oh no Perché questa è solo la più antica, la più arcaica limitazione della tecnologia che ha guidato le convenzioni di denominazione, o almeno ha influito sul modo in cui è sembrato sbagliato / giusto. Successivamente, c'era il problema della trasmissione seriale a 7 bit, che causava problemi corrispondenti con i codici carattere (codifiche carattere newspeak), il che significava che dovevi limitarti alle lettere dell'alfabeto inglese dalla A alla Z.
In realtà mi raccomando ancora di farlo. Ecco dove siamo! Non abbiamo ottenuto ulteriore.
Al momento, dal 2011, lo standard C ++ supporta l'Unicode generale nei nomi (e lo ha fatto dal 1998), mentre le effettive implementazioni in C ++ no. In particolare il compilatore g ++ è sfidato a carattere nazionale. Deriva da quel limite tecnologico dell'era oscura.
double blueberryJamViscosity = 0.0; // OK
double blåbærsyltetøyViskositet = 0.0; // Ouch!
Infine, sul tema dei caratteri di sottolineatura rispetto alle lettere maiuscole intercalate,
- Prenota un modulo facilmente riconoscibile per i nomi dei tipi.
- Prenota TUTTO MAIUSCOLE per le macro.
- Sii coerente.
Penso che sia davvero, tranne che per regole come "in genere evita il nome di una sola lettera ad eccezione di (loop, template param, blah blah)", e "evita di usare l, facilmente confuso con 1" e "evita maiuscolo maiuscolo" , facilmente confuso con 0 ". Inoltre, evita di usare nomi riservati come l'inizio con il carattere di sottolineatura seguito da lettere maiuscole, contenente due caratteri di sottolineatura successivi o che iniziano con il carattere di sottolineatura e che si trovano nello spazio dei nomi globale.
Saluti e saluti hth