식별자 네이밍 규칙, 네이밍 컨벤션

rain98·2020년 12월 23일
0

자바스크립트

목록 보기
2/4
post-thumbnail
post-custom-banner

네이밍 컨벤션?

좋은 프로그래머가 되기 위한 조건중 하나는 식별자 작성 규칙에 의거한 좋은 이름을 잘 짓는거라 생각한다.

코딩은 혼자 하는게 아닌 여러 개발자들과 협업하여 하나의 프로젝트를 만드는데 목표를 둔다.

그러기 위해서는 가독성 좋은 코드가 필요하며 나만 알아볼 수 있는 코드가 아닌 보기 좋은 코드가 필요하다.

물론 혼자 코딩한다면 상관이 없다. 하지만 버릇습관을 잘 고쳐 나중에 사용가능 하도록 많이 연습하고 사용하자.

네이밍 컨벤션의 목적이다.

  • 소스 코드를 읽고 이해하는 데 드는 시간이 절약 된다.
  • 개발자와 분석가가 시스템 수행 작업 및 소스코드를 수정 / 확장 등의 경우 적용하는 방법을 보다 쉽게 이해할 수 있다

식별자 네이밍 규칙

식별자는 어떤값을 구별해서 식별해낼 수 있는 고유한 이름을 말한다.
식별자는 다음과 같은 네이밍 규칙을 준수해야 한다.

  • 식별자는 특수문자를 제외한 문자,숫자,언더스코어(_),달러 기호($)를 포함할 수 있다.
  • 식별자는 특수문자를 제외한 문자,언더스코어,달러 기호로 시작해야한다. 숫자로 시작하는것은 허용하지 않는다.
  • 예약어는 식별자로 사용할 수 없다.

예약어란?

예약어는 프로그래밍 언어에서 사용되고 있거나 사용될 예정인 단어를 말한다.
자바스크립트의 예약어는 다음과 같다.

await ,break ,class ,false ,for ,if ,this등등

권장하지 않는 식별자 네이밍

  • 예제1
   var person, age, name;

변수 이름도 식별자이므로 위 네이밍 규칙을 따라야한다. 변수는 쉼표로 구분해 하나의 문에서 여러개를 한번에 선언이 가능하다. 하지만 그럴 경우 가독성이 떨어지기 때문에 권장하지는 않는다.


  • 예제2
   var this; // 예약어
   var 1st; // 숫자로 시작하는것은 허용하지 않는다.

다음 식별자는 명명 규칙에 위배되므로 사용할 수 없다.


  • 예제3
   var 이름;
   var 나이;

ES5부터 식별자를 만들 때 유니코드 문자를 허용하므로 알파벳 외의 한글이나 일본어 식별자를 사용할 수 있다. 하지만 알파벳 외의 유니코드 문자로 명명된 식별자를 사용하는 것은 바람직하지 않으므로 권장하지 않는다.


  • 예제4
   var x = 3;
   var a;

변수 이름은 변수의 존재 목적을 쉽게 이해할 수 있도록 의미를 명확히 표현해야 한다. 좋은 변수 이름은 코드의 가독성과 생산성을 높인다.
(변수 선언에 별도의 주석이 필요하다면 변수의 존재 목적을 명확히 드러내지 못하는 것이다.)

네이밍 컨벤션

네이밍 컨벤션은 하나 이상의 영어 단어로 구성된 식별자를 만들 때 가독성 좋게 단어를 한눈에 구분하기 위해 규정한 명명 규칙이다. 네이밍 컨벤션을 잘 지키면 읽기 좋은 이름을 만들 수 있다.

일관성을 유지한다면 어떤 네이밍 컨벤션을 사용해도 좋지만 자바스크립트에서는 일반적으로 변수나 함수의 이름에는 카멜 케이스를 사용하고, 생성자 함수, 클래스의 이름에는 파스칼 케이스를 사용한다.

Camel Case

예시 userList, newTodoList, firstName

카멜케이스는 낙타의 등의 혹만 툭 튀어 나온것에 이름을 따왔다고한다.

여러 단어가 합쳐진 이름을 지을 경우 첫단어의 첫글자는 소문자로 하고, 두번째 글자부터는 첫글자를 대문자로 사용하는 방법을 말한다.

ECMAScript사양에 정의되어 있는 객체와 함수들도 카멜 케이스와 파스칼 케이스를 사용하고 있다.

Pascal Case

예시 UserList, NewTodoList, FirstName

단어마다 첫글자를 대문자로 표기하는 방법을 말한다.
따라서 코드 전체의 가독성을 높이려면 카멜 케이스와 파스칼 케이스를 따르는것이 유리하다고 한다.


참고 - 모던 자바스크립트 deep dive (도서)

profile
헷갈리거나 기억에 남기고 싶은것을 기록합니다.
post-custom-banner

0개의 댓글