모든 대문자가 눈에 띄고 최소화되어야함에 먼저 동의합시다.
따라서 C와 C ++에서는 매크로가 악의가 아니라 똑같이 추악하기 때문에 매크로와 매크로에 대한 규칙으로 사용됩니다.
초기 C에는 const가 없었으므로 상수는 매크로로 표현해야했습니다. 또한 초기에는 프로그램이 훨씬 짧았으므로 오늘날 좋지 않은 관행을 사용할 수 있습니다 (예 : IIRC Brian Kernighan은 대문자가 아닌 많은 매크로로 코드를 작성했습니다). 또한 당시에는 소문자가없는 키보드가 존재했습니다. 나는 노르웨이 Tandberg EC-10 컴퓨터에서 1980 또는 1979 년경에 그런 것을 사용했다고 생각합니다.
따라서 Java는 초기 C에서 상수에 대한 대문자 규칙을 선택했습니다. 한편, 아마도 그 이전에도 (여기서 연대기가 확실하지 않습니다) C는 상수를 얻었습니다. 그러나 물론 일부 / 많은 C 프로그래머들이 대문자 매크로로서 상수의 초기 규칙에 따라 달라졌지만 C ++ 프로그래머는 더 현명했습니다.
요즘 큰 문제는 사람들이 Java를 먼저 배우거나 C (중세의 관습이있는)를 먼저 배운 다음 C ++에 와서 파울 대문자 컨벤션을 취하는 것입니다.
그래서,
int const answer = 42; // Nice, good, OK.
const int ANSWER = 0x2A; // Ouch!
#define COMPANYNAME_ANSWER 052 // Oh kill me, please.
글쎄, jest에서 대문자 전용 키보드를 언급했다고 생각했을 것입니다. 아뇨 이는 명명 규칙을 주도하거나 최소한 잘못 / 올바른 것처럼 보이는 데 영향을 미치는 가장 오래되고 가장 오래된 기술 제한 일뿐입니다. 다음으로, 7 비트 직렬 전송 문제로 인해 사용 된 문자 코드 (뉴스 피크 문자 인코딩)에 해당하는 문제가 발생하여 영어 알파벳 A부터 Z까지의 문자로 제한해야했습니다.
실제로 나는 여전히 그렇게하는 것이 좋습니다. 그것이 우리가있는 곳입니다! 더 이상 얻지 못했습니다.
현재 표준 C ++은 2011 년 현재 일반적인 유니 코드 이름을 지원하지만 1998 년부터 그렇게했습니다. 실제 C ++ 구현은 그렇지 않습니다. 특히 g ++ 컴파일러는 국가 특성에 도전합니다. 그것은 암흑 시대의 기술적 한계에서 비롯됩니다.
그래서,
double blueberryJamViscosity = 0.0; // OK
double blåbærsyltetøyViskositet = 0.0; // Ouch!
마지막으로, 밑줄 대 산재 된 대문자의 주제에 대해
- 형식 이름으로 쉽게 인식 할 수있는 양식을 예약하십시오.
- 매크로를 위해 대문자를 모두 예약하십시오.
- 일관성을 유지하십시오.
"일반적으로 (루프, 템플릿 매개 변수, blah blah를 제외하고 단일 문자 이름을 피하십시오") 및 "l을 사용하지 마십시오. 0 "으로. 또한 밑줄로 시작하고 대문자로 끝나거나 두 개의 연속 밑줄을 포함하거나 밑줄로 시작하여 전역 네임 스페이스에있는 것과 같은 예약 된 이름을 사용하지 마십시오.
건배 & hth