대문자 상수 올바로 사용하기
중요도: 4
아래 코드를 평가해 보시기 바랍니다.
const birthday = '18.04.1982';
const age = someCode(birthday);
위 코드의 상수 birthday
는 태어난 날짜 정보를 담고 있습니다. age
라는 상수는 나이에 관한 값을 담고 있는데 birthday
를 조작하여 그 값을 도출합니다(생일을 이용하여 나이를 도출하는 코드는 간결성을 위해 여기선 언급하지 않겠습니다. 이 문제에서 해당 코드가 중요한 역할을 하지 않기도 합니다).
이런 상황에서 birthday
를 대문자 상수로 바꾸는 것이 적절할까요? age
역시 대문자 상수로 바꾸는 것이 괜찮은 선택일까요?
const BIRTHDAY = '18.04.1982'; // 대문자 상수로 바꿔도 괜찮을까요?
const AGE = someCode(BIRTHDAY); // 대문자 상수로 바꿔도 괜찮을까요?
대문자 상수는 ‘하드 코딩한’ 값의 별칭을 만들 때 주로 사용합니다. 실행 전에 이미 값을 알고 있고, 코드에서 직접 그 값을 쓰는 경우에 사용하죠.
위 코드에서 birthday
가 그런 경우입니다. 따라서 birthday
는 대문자 상수로 적합합니다.
반면, age
는 런타임에 평가됩니다. 올해의 나이와 내년의 나이는 다르죠. 상수는 코드가 실행될 때마다 바뀌지 않아야 하는 값이란 걸 아마 느끼셨을 겁니다. 이런 관점에서 보았을 때, age
는 birthday
보다 덜 상수스럽습니다. 런타임에 계산되죠. 따라서 age
는 대문자 상수에 적합하지 않습니다.