이 글은 『모던 자바스크립트 Deep Dive』 스터디 토론을 인터뷰 형식으로 정리한 글이다. 반지의 제왕 캐릭터로 비유했다.
목표
변수, 표현식과 문, 데이터 타입을 알아보자.
1 .세미콜론
글을 작성할 때 문장의 마무리로 마침표를 찍듯 세미콜론을 사용하는 언어가 많다. 하지만 자바스크립트(JavaScript)는 세미콜론이 선택 사항이다. 프로젝트에서 어떤 규칙을 사용할까.
Q. 어떤 규칙을 준수하나요?
간달프: 사용하는 것을 선호한다.
레골라스: 사내 컨벤션이 세미콜론을 사용하지 않는다. 문제가 발생했을 때 'Early Return 패턴1'을 사용해서 문제를 해결했다. 개인 프로젝트에는 세미콜론을 사용한다.
2. undefined vs. null
자바스크립트 엔진은 값을 초기화하지 않으면 undefined
를 기본으로 할당한다. 따라서 의도적으로 빈 값을 넣을 때는 null
을 주로 사용한다.
Q. 왜 undefined를 만들었을까?
프로도: 자바스크립트는 동적 언어다. 메모리 공간을 만들었지만(선언은 했지만) 값이 할당되지 않은 상태를 표현하기 위해 undefined
를 만들지 않았을까?
3. 변수 선언하기: var
ES6 이전에는 var
키워드를 사용해서 변수를 선언했다. 하지만 let
, const
키워드가 등장한 이후에는 코드를 작성할 때 var
키워드를 사용하지 않았다.
var
키워드를 어떻게 바라보면 좋을까.
피핀: var
키워드는 아직도 라이브러리를 개발할 때 사용한다.
프로도: 아직도 사용할 수 있는 키워드고 문제는 아니다. 하지만 모두가 이해하고 사용하는 인지 비용이 높다고 생각한다. 그래서 가급적 var
키워드를 사용하지 않는다.
4. 부동소수점
부동소수점은 정산, 결제 등 돈과 관련된 모든 도메인에서 주로 이야기하는 주제다.
간달프: 자바(Java)에서는 BigDecimal
클래스를 사용해서 문제를 해결한다.
레골라스: 정책에 따라 다르게 처리한다. 중요한 점은 도메인을 이해해야 한다.
참고: 자세한 이야기는 부동소수점에서 알아보자.
5. 네이밍 컨벤션(Naming Convention)
프로도: 변수명은 camelCase, 클래스, 리액트(React) 컴포넌트는 PascalCase 등 다양하게 사용한다.
레골라스: 네이밍을 할 때 어려운 점과 참고하기 좋은 서적을 공유했다.
마치며
간단한 주제였지만 꽤 오랜 시간이 걸렸다. 그래도 다양한 사고가 확장되는 경험을 해서 좋았다. 추후에 스코프와 호이스팅을 배우면 더 깊은 대화를 할 수 있을 것 같아 기대된다.
-
『리팩터링』(마틴 파울러, 한빛미디어, 2020)
↩