프로젝트 중 상수를 대문자로 쓰는 게 관례라고 해서 왜 그런 것인지, 꼭 지켜야만 하는 것인지에 대해 생각해보려 한다!
상수 Constant
프로그래밍에서 변하지 않는 것을 의미한다. 상수는 변수에 할당되지만 프로그램 실행 중에는 변경하거나 수정할 수 없는 값이다. 일반적으로 시간이 지나도 변하지 않는 고정 값 또는 값을 나타내는 데에 사용된다.
`const` 키워드를 사용하여 정의되며 상수 값은 일단 정의되면 수정할 수 없다. (JS에서 배열 일부를 변경하는 것은 가능함, 참조하는 주소값을 변경하는 것은 아니라서. 통째로 바꾸려는게 안된다는 것. )
JavaScript는 변경할 수 없는 값을 선언하는 방법을 제공할까? 관습의 뿌리는 어디일까!
The capitalization convention has roots in C
대문자 컨벤션은 C언어에 뿌리를 두고 있다.
C언어는 Compiler 언어이다. 프로그램이 실행되기 전에 모든 코드를 머신 코드로 변환한다. JavaScript는 Interpreter 언어로 코드가 실행될 때 줄 단위로 코드를 읽는다. 이 차이는 C에서 상수 값을 선언하는 방식에 영향을 미친다.
#define hoursInDay 24
컴파일러는 상수가 대문자이든, 소문자이든 24에 집중한다. 대신 대문자를 사용하면 프로그래머가 상수 값을 확실하게 확인할 수 있다.
#define HOURS_IN_DAY 24
모든 매크로(`#define`)를 대문자로 작성하면 충돌을 방지하고 코드에서 매크로를 빠르게 식별할 수 있다. C언어에서는 대소문자를 구별하기 때문에 대문자 매크로와 다른 식별자는 서로 다른 것으로 처리된다.
JavaScript 에서의 상수
JavaScript에서도 ES6부터 const와 let이 생겼는데, 이전에 var로만 모든 변수를 처리해야될 때 이런 대문자 컨벤션은 유용했을 것이라 생각한다!
const는 위에서 말했듯이 참조값은 변경될 수 있기 때문에 대문자로 사용하기 위해선 이런 조건을 참고하는 것이 좋다.
1. 변수의 값이 원시 값인가?
2. 프로그램 전체에서 동일한 값이고, 그에 대한 변수 이름을 유지하기 위해 사용하는가?
두 조건이 해당되면 대문자를 사용할 수 있다.
일반적으로 하드 코딩된 상수에 대문자를 사용한다. 실행 전 값이 알려져있고 코드에 직접 기재된 경우!
const BIRTHDAY = '18.04.1982'; // make birthday uppercase?
const AGE = someCode(BIRTHDAY); // make age uppercase?
위의 예시에서 BIRTHDAY는 대문자를 사용할 수 있다. 하지만 age는 런타임에 평가된다. 오늘은 한 살이지만 내년엔 다른 나이가 된다. 물론 실행 후 변하지 않아서 상수지만, 생일보단 덜한 상수라 볼 수 있음. 계산되기 때문에 소문자를 사용할 수 있다.
무조건적으로 사용해야 된다는 말을 할 수 없다. 이 컨벤션은 상수를 가진 여러 언어에서 비롯되었다. 자바스크립트의 경우 그렇지 않다.
핵심은 JavaScript에서 상수를 정의할 때 프로그래머의 의도가 포함되어야 한다는 점을 인식하는 것.
모든 컨벤션이 그렇듯 회사와 환경에 따라 요구 사항은 다를 수 있다! 개발자들간의 약속인 것이니까.
[When to capitalize your JavaScript constants]
[What is the history for naming constants in all uppercase?]
ChatGPT 🤖
'JavaScript' 카테고리의 다른 글
Date() 생성자와 내장 메서드로 시계 깔끔하게 적용하기 (0) | 2023.08.29 |
---|---|
Submit시 Event.preventDefault()로 새로고침 Reload 방지하기 (2) | 2023.08.29 |
로컬 스토리지 localStorage 와 세션 스토리지 sessionStorage (0) | 2023.08.28 |
자료구조, 배열 Arrays, 내장 메서드로 재배열 하기 (0) | 2023.08.19 |
반복문 없이 Array.prototype.filter()로 쉽게 재배열 하기 (0) | 2023.08.15 |