literal or constant

이름 있는 상수

리터럴은 빠르고 직접적이지만, 값의 의미가 숨으면 const, constexpr, enum으로 의도를 드러낸다.

literal

한 번 쓰는 값

의미가 바로 보이면 그대로 둔다.

const

실행 중 고정값

이름, 타입, 스코프가 필요한 기본 선택이다.

constexpr

컴파일 때 확정

배열 크기처럼 컴파일 값이 필요할 때 쓴다.

enum

제한된 선택지

상태나 모드처럼 값 묶음에 어울린다.

1. 반복

같은 값이 여러 곳에 나오면 상수 후보다.

2. 의미

숫자만 보고 의도가 안 보이면 이름을 붙인다.

3. 타입

접두사와 접미사로 해석 타입을 확인한다.

4. 범위

필요한 블록 안에 상수를 둔다.

5. 변경

바뀌면 변수를, 안 바뀌면 상수를 선택한다.

피할 것 #define은 타입과 스코프가 약하므로 현대 C++ 상수 표현의 기본 선택으로 두지 않는다.