시작!

개발자는 변수의 이름을 보고 무엇을 하는 것인지 짐작할 수 있게 만들어야 한다.
왜냐하면 코드를 읽기만 해도 프로그램을 설명할 수 있어야 하기 때문이다.


이름 설정 주의점!

모든 변수의 이름은 문자로 시작해서 문자로 끝내야 한다.
이 책에서 자바스크립트는 해서는 안 될 여러 가지를 허용한다고 쓰여 있다.

첫째로 _(밑줄)이다.

_(밑줄)로 시작하거나 끝나는 이름들은 일반적으로 public 속성이나 전역 변수를 의미한다.
결국 변수의 앞이나 뒤에 밑줄을 쓰는 것을 개발자의 무능함을 나타내는 지표기에 우리는 절대 앞이나 뒤에 밑줄을 쓰는 일이 없도록 해야한다!!

둘째로 $(달러)기호이다.

$(달러) 기호는 코드 생성기나 트랜스파일러, 그리고 매크로 처리기에서 사용할 목적으로 추가되었다.
그래서 우리는 코드 생성기 같은 프로그램이 아닌 이상 $(달러) 기호를 사용하지 않는 것이 좋다.

셋째로 숫자가 포함된 변수이다.

순서를 나타내는 서수형 변수는 thing_nr 같이 이름을 짓고
양을 나타내는 기수형 변수는 nr_things와 같이 이름을 짓는 것처럼
개발자가 이름에 대해 충분히 고민하지 않았다는걸 말한다.


😭 단어 표기의 논쟁!

변수 지정에 공백 문자가 허용되지 않아 여러 개의 단어를 어떻게 표기하느냐에
대해서 여러 의견이 나뉜다.

  1. 문자를 대문자로 표기하는 캐멀 케이스를 써야 한다고 주장한다.

  2. 각 단어를 _(밑줄)로 연결해야 한다고 주장한다.

  3. 단어의 구분 없이 그냥 모든 단어를 이어서 표기해야 한다고 주장한다.

이 논쟁은 수년가 이어져 왔고 합의점을 찾을 수 없어 보인다.
왜냐? 셋 다 틀렸기 때문이다!!

이 책에서는 단어를 구분하기 위해서 공백 문자를 사용하는 것이 정답이라 생각된다고 말한다.
그 날이 오기까지 우리는 _(밑줄)을 사용해서 단어를 구분하는 것이 좋을것 같다.
그렇게 되면 다음 세대 언어에서 공백으로 바꿀때 받아들이기 더욱 편할 것이기 때문이다.


변수 이름의 시작 👟

자바스크립트의 모든 이름은 반드시 소문자로 시작해야 한다. 자바스크립트의 new 연산자 문제 때문이다.
함수 호출문이 new로 시작하면 해당 함수는 생성자로서 호출 되고, 그렇지 않으면 함수로서 호출된다.
생성자와 함수는 겉으로 완전히 똑같아 보여 new를 써야하는 쓰지 않은 경우, 반대로 잘못 사용한 new로 인해 발생하는 문제를 자동으로 감지할 방법이 없다.
이 책에서 제시하는 해결책은 절대 new를 사용하지 말라고 강력히 것이다. new를 쓰지 않으면 대문자로 시작하는 이름을 쓸 일이 없기 때문이다.


예약어 변수 이름 설정 금지 🚫

arguments await break case catch class const continue debugger default 
delelte do else enum eval export extends false finally for function if 
implements import in Infinity instanceof interface let NaN new null package
private protected public return static super switch this throw true try 
typeof undefined var void while with yield 

위 목록은 예약어 목록이다. 다시말해 자바스크립트에서 미리 정해둔 명령어를 말한다.
목록에 있는 단어는 절대 변수 이름, 매개변수 이름으로 사용해서는 안된다.