고정값 표현 기준

반복되는 의미는 const로 이름을 주고, 한 번 쓰는 값은 리터럴로 둔다

상수와 리터럴은 모두 바뀌지 않는 값을 다루지만 읽는 위치가 다르다. 코드 곳곳에서 같은 의미로 반복되면 이름 있는 상수로 끌어올리고, 문맥 안에서 즉시 이해되는 값은 리터럴로 남긴다.

1

값을 볼 때 먼저 묻는 질문

반복되는가 여러 줄에서 같은 의미로 쓰이면 이름이 필요하다.
의미가 숨어 있는가 3.141592처럼 숫자만으로 의도가 안 보이면 상수다.
범위가 제한되는가 함수 안에서만 필요하면 지역 const로 충분하다.
이름 있는 고정값

const double PI = 3.141592;

타입 검사를 받고, 디버거에서 이름으로 보이며, 스코프 안에서 의도를 직접 말한다.

좋은 신호 의미, 단위, 변경 지점이 한 곳으로 모인다.
문맥 안의 값

score > 0, 'A', "OK"

주변 코드만으로 뜻이 충분하면 값을 직접 두어도 읽기가 흐려지지 않는다.

주의 신호 같은 값이 반복되기 시작하면 상수 후보가 된다.
가독성

값의 의미가 도메인 용어라면 이름 있는 상수가 더 빠르게 읽힌다.

타입 안전성

const는 타입을 유지하고, 리터럴은 접미사와 문맥으로 타입을 읽는다.

변경 비용

정책 값은 한 곳에서 바뀌어야 하므로 상수로 올린다.

피해야 할 선택

단순 치환 매크로는 스코프와 타입 경계가 약해 현대 C++에서는 우선순위가 낮다.