Najpierw ustalmy, że ALL UPPERCASE jest odleżyną i należy ją zminimalizować.
Dlatego w C i C ++ jest on używany jako konwencja dla makr i tylko makr, ponieważ makra są równie brzydkie, by nie powiedzieć zło.
Wczesne C nie miało stałych, więc stałe musiały być wyrażone jako makra. Ponadto, w tych wczesnych dniach programy były znacznie krótsze, więc można było zastosować praktyki, które są dziś niezbyt dobre (np. IIRC Brian Kernighan napisał kod z dużą ilością makr innych niż wielkie litery). Ponadto w tamtych czasach istniały klawiatury, które nie miały małych liter; Użyłem jednego takiego, na norweskim komputerze Tandberg EC-10, około 1980 lub 1979, tak myślę.
Tak więc Java od początku przyjęła konwencję wielkich liter dla stałych C. Tymczasem, a może nawet wcześniej (nie jestem pewien chronologii tutaj), C ma stałe. Jednakże, chociaż oczywiście niektórzy / wielu programistów C utknęło we wcześniejszej konwencji z konieczności stałych jako makr pisanych wielkimi literami, programiści C ++ byli bardziej rozsądni.
Dużym problemem w dzisiejszych czasach jest to, że najpierw ludzie uczą się Java, a najpierw C (z konwencjami ze średniowiecza), a potem przychodzą do C ++, zabierając ze sobą tę okropną konwencję wielkich liter.
Więc,
int const answer = 42; // Nice, good, OK.
const int ANSWER = 0x2A; // Ouch!
#define COMPANYNAME_ANSWER 052 // Oh kill me, please.
Może pomyślałeś, że w żartach wspomniałem o klawiaturach pisanych tylko wielkimi literami. O nie. Ponieważ jest to tylko najstarsze, najbardziej archaiczne ograniczenie technologii, które doprowadziło do konwencji nazewnictwa lub przynajmniej wpłynęło na to, jak źle się wydawały. Następnie pojawił się problem z 7-bitową transmisją szeregową, która spowodowała odpowiednie problemy z używanymi kodami znaków (kodowanie znaków w gazecie), co oznaczało, że musiałeś ograniczyć się do liter alfabetu angielskiego, od A do Z.
Właściwie polecam nadal to robić. Tam jesteśmy! Nie dotarliśmy dalej.
W chwili obecnej, począwszy od 2011 r., Standardowe C ++ obsługuje ogólne Unicode w nazwach (i robi to od 1998 r.), Podczas gdy rzeczywiste implementacje C ++ nie. W szczególności kompilator g ++ ma charakter narodowy. Wynika to z ograniczeń technologicznych średniowiecza.
Więc,
double blueberryJamViscosity = 0.0; // OK
double blåbærsyltetøyViskositet = 0.0; // Ouch!
Wreszcie, jeśli chodzi o podkreślenia kontra przeplatane wielkie litery,
- Zarezerwuj łatwo rozpoznawalny formularz dla nazw typów.
- Zarezerwuj ALL UPPERCASE dla makr.
- Bądź konsekwentny.
Myślę, że tak naprawdę, z wyjątkiem reguł takich jak „ogólnie unikaj nazwy jednoliterowej, z wyjątkiem (pętli, szablonu param, bla bla)” i „unikaj używania l, łatwo mylonego z 1” i „unikaj wielkich liter O, łatwo mylących z 0 ”. Ponadto, oczywiście, unikaj używania nazw zastrzeżonych, takich jak rozpoczynanie od znaku podkreślenia, a następnie wielkich liter, zawierających dwa kolejne znaki podkreślenia lub rozpoczynanie od znaku podkreślenia i znajdowanie się w globalnej przestrzeni nazw.
Pozdrawiam i hth