Vamos primeiro concordar que TODAS AS MAIÚSCULAS são uma desgraça e devem ser minimizadas.
Em C e C ++, portanto, é usado como uma convenção para macros, e somente macros, porque as macros são igualmente feias, para não dizer mal.
O C inicial não tinha const, portanto, as constantes tinham que ser expressas como macros. Além disso, naqueles dias, os programas eram muito mais curtos, para que as práticas que hoje são ruins possam ser usadas (por exemplo, o IIRC Brian Kernighan escreveu código com muitas macros não maiúsculas). E também, naqueles dias, existiam teclados que não tinham letras minúsculas; Eu usei um desses, no computador norueguês Tandberg EC-10, por volta de 1980 ou 1979, acho que sim.
Então, Java pegou a convenção maiúscula para constantes desde o início C. Enquanto isso, e talvez até antes disso (não tenho certeza da cronologia aqui), C obteve constantes. No entanto, embora alguns programadores C estivessem presos à convenção anterior por necessidade de constantes como macros maiúsculas, os programadores C ++ eram mais sensíveis.
O grande problema hoje em dia é quando as pessoas aprendem Java primeiro, ou C (com convenções da idade média) primeiro, e depois chegam ao C ++, levando essa convenção em maiúscula com elas.
Então,
int const answer = 42; // Nice, good, OK.
const int ANSWER = 0x2A; // Ouch!
#define COMPANYNAME_ANSWER 052 // Oh kill me, please.
Bem, você deve ter pensado que eu mencionei teclados apenas em letras maiúsculas. Ah não. Porque essa é apenas a limitação da tecnologia mais antiga e mais arcaica que impulsionou as convenções de nomenclatura ou pelo menos afetou o quão errado / certo eles pareciam. Em seguida, houve o problema da transmissão serial de 7 bits, que causou problemas correspondentes aos códigos de caracteres (codificação de caracteres de newsletters) usados, o que significava que você precisava se restringir às letras do alfabeto inglês de A a Z.
Na verdade, eu recomendo ainda fazer isso. É onde estamos! Nós não temos mais.
No momento, a partir de 2011, o C ++ padrão suporta Unicode geral em nomes (e o faz desde 1998), enquanto as implementações reais do C ++ não. Em particular, o compilador g ++ é desafiado por caracteres nacionais. Ela decorre dessa limitação tecnológica da Idade das Trevas.
Então,
double blueberryJamViscosity = 0.0; // OK
double blåbærsyltetøyViskositet = 0.0; // Ouch!
Por fim, sobre sublinhados versus letras maiúsculas intercaladas,
- Reserve um formulário facilmente reconhecido para nomes de tipos.
- Reserve TODAS AS MAIÚSCULAS para macros.
- Ser consistente.
Eu acho que é isso, realmente, exceto para regras como "geralmente evite o nome de uma letra, exceto (loop, parâmetro do modelo, blá, blá)" e "evite usar l, facilmente confundido com 1" e "evitar maiúsculas, facilmente confundido" com 0 ". Além disso, é claro, evite usar nomes reservados, como começando com sublinhado seguido por maiúsculo, contendo dois sublinhados sucessivos ou começando com sublinhado e estar no espaço de nomes global.
Saúde e saúde