요약: g_는 mutable 전역 변수에만 쓰자.
C++ 11 에서 새롭게 도입되고 C++14에서 향상된 constexpr 키워드는 컴파일 타임 상수를 의미하며 변수 앞에 적용될 수 있다.
그래서 전역 변수를 쓸 때처럼 constexpr를 정의하면 마치 g_ prefix를 붙여야 할 것 같이 느껴질 수 있다.
하지만 이건 추천하지 않는다.
이건 코딩 스타일/컨벤션의 문제인데, 몇 가지 관점에서 볼 수 있다.
보통 g_는 global variable이라는 의미로 사용된다.
그래서 많은 개발자들이 g_는 변경 가능한 전역 변수 (mutable global state)에만 붙인다고 생각한다.
❓ 그런데 constexpr은?
constexpr은 컴파일 타임 상수이다.
불변 (immutable)이고, 전역 상태의 위험성도 없다.
즉, 일반적인 전역 변수와는 의미가 다르다.
constexpr은 컴파일 타임 상수이다.
불변 (immutable)이고, 전역 상태의 위험성도 없다.
즉, 일반적인 전역 변수와는 의미가 다르다.
그래서 g_를 붙이면 오히려:
"이 변수는 프로그램 어딘가에서 변경될 수 있는 글로벌 상태인가?"
처럼 오해할 여지가 있다.
"이 변수는 프로그램 어딘가에서 변경될 수 있는 글로벌 상태인가?"
처럼 오해할 여지가 있다.
만약 프로젝트 컨벤션에서 g_를 mutable 전역 변수에 쓰고 있다면,
constexpr 값에는 안 붙이는 게 좋다.
constexpr 값에는 안 붙이는 게 좋다.
Show Comments