int value; // 관례적 (conventional)
int Value; // 비관례적 (소문자로 시작해야 함)
int VALUE; // 비관례적 (소문자로 시작하고 전체가 소문자여야 함)
int VaLuE; // 비관례적 (정신과 상담을 받아보세요) ;)
Snake_case
int my_variable_name; // 관례적 (밑줄로 구분/snake_case) int my_function_name(); // 관례적 (밑줄로 구분/snake_case)
camelCase
int myVariableName; // 관례적 (대문자 표기/camelCase) int myFunctionName(); // 관례적 (대문자 표기/camelCase)
#define EXAM_WORD "Apple"
square.h라면 SQUARE_H라고 쓰는 식이죠.is 또는 has 라는 단어로 시작하는 이름을 가집니다.isEqual
hasCommonDivisor
Foo::x처럼 쓸 때 Foo가 네임스페이스인지 클래스인지 헷갈리지 않게 해줘요.namespace NamespaceIdentifier
{
// 네임스페이스의 내용이 여기에 들어갑니다
}
g 또는 g_라는 접두사를 붙여서 이 변수가 전역 변수임을 나타냅니다. g_ 를 붙이는 것처럼, 정적 지속 기간을 가지는 지역 변수 앞에는 s_를 접두사로 붙이는 것이 일반적인 관례입니다.예전부터 타입 별칭의 이름을 짓는 방식은 딱 하나로 정해져 있지 않았습니다.
주로 세 가지 방식이 쓰이는데, 코딩을 하다 보면 이 세 가지를 모두 만나게 될 것입니다.
끝에 _t 를 붙이는 방식 t는 type의 약자입니다.
size_t나 nullptr_t 처럼 C++ 표준 라이브러리에서 전역 타입 이름에 자주 사용합니다.
C언어에서 넘어온 방식이라 예전에는 아주 흔했지만, 최신 C++에서는 잘 쓰지 않습니다.
(참고로 POSIX 시스템에서는 _t를 시스템 전용으로 예약해 두었기 때문에, 이 방식을 쓰면 이름 충돌이 발생할 수 있습니다.)
끝에 _type 을 붙이는 방식
std::string::size_type 처럼 표준 라이브러리의 내부 타입들에 종종 사용됩니다. 하지만 일관성이 없어서 헷갈릴 수 있습니다.
끝에 아무것도 붙이지 않는 방식
최신 C++에서는 대문자로 시작하고 끝에 아무런 꼬리말도 붙이지 않는 방식을 가장 추천합니다.
대문자로 시작하면, 소문자로 시작하는 일반 변수나 함수 이름과 쉽게 구분할 수 있어서 이름이 겹치는 것을 막아줍니다.
이 추천 방식을 따르면 주로 아래와 같은 코드를 보게 됩니다.
void printDistance(Distance distance); // Distance는 우리가 정의한 타입입니다.
이 경우 대문자 Distance는 타입이고, 소문자 distance는 매개변수의 이름입니다.
C++는 대소문자를 엄격하게 구분하므로 이렇게 써도 아무 문제가 없습니다.
모범 사례
특별한 이유가 없다면, 타입 별칭의 이름은 대문자로 시작하게 짓고 끝에 어떤 꼬리말도 붙이지 마세요.
아주 단순한 상황에서 변수 이름으로 알파벳 한 글자(예: x )를 자주 사용하는 것처럼, 템플릿 매개변수가 단순하고 뻔한 용도로 사용될 때는 대문자 한 글자(보통 T부터 시작) 를 사용하는 것이 관례입니다.
예를 들어 우리가 만든 max 함수 템플릿을 보세요.
template <typename T>
T max(T x, T y) {
return (x < y) ? y : x;
}
우리는 T에 복잡한 이름을 지어줄 필요가 없습니다.
왜냐하면 T는 단순히 비교할 값들을 위한 자리 표시자일 뿐이고,
T는 비교할 수 있는 어떤 타입이든 될 수 있다는 것이 명백하기 때문입니다.
만약 타입 템플릿 매개변수의 쓰임새가 한눈에 파악하기 어렵거나 반드시 충족해야 하는 특정 요구 사항이 있다면,
일반적으로 다음과 같은 두 가지 이름 짓기 방식을 사용합니다.
대문자로 시작하는 단어
(예: Allocator) 표준 라이브러리(Standard Library)에서 이 명명 규칙을 사용합니다.
앞에 T를 붙이고 대문자로 시작하는 단어
(예: TAllocator) 이렇게 하면 이 이름이 타입 템플릿 매개변수라는 것을 더 쉽게 알아볼 수 있습니다.
둘 중 어느 것을 선택할지는 개인의 취향에 달려 있습니다.