구글의 JAVASCRIPT 코딩 가이드 알아보기

오늘은 어제 자바에 이어 자바스크립트에 대한 문서를 보겠습니다.

파일 이름

파일 이름은 모두 소문자이여야만 하며, 밑줄 및 대시는 포함할 수 있습니다.

파일 인코딩

UTF-8입니다.

중괄호

모든 IF문, ELSE문, FOR문, WHILE문에는 중괄호가 필요합니다.

단, 간단한 if문은 가독성을 위해 중괄호없이 한 줄에서 작성할 수 있습니다.

K & R

K & R 코딩 스타일을 따릅니다.

여는 중괄호 앞에는 줄 바꿈이 없고, 뒤에는 줄 바꿈이 있습니다.

하지만, 닫는 중괄호 앞에는 줄 바꿈을 합니다.

빈 블록

비어 있는 불록들은 괄호 사이에 공백이 없습니다.

함수 표현식

함수 호출에 대한 인수 목록에서 익명 함수를 선언 할 때에는 함수의 본문은 앞의 들여 쓰기 깊이보다 두 칸 더 들여 씁니다.

수행문

한 줄에 하나의 문장이 오고, 그 다음에는 줄 바꿈을 합니다.

그리고 모든 문장에는 세미콜론이 붙습니다.

한 줄당 코드의 길이는 80자입니다. 초과되는 길이는 줄 바꿈이 요구됩니다.

함수 인자

모든 함수 인자는 함수의 이름과 같은 행에 작성됩니다.

지역 변수

var 키워드는 지양하고 const와 let을 사용합니다.

변수가 재할당하는 경우가 아니라면 const 키워드를 권장합니다.

그리고 모든 지역 변수의 선언은 한 변수만 선언합니다.

초기화는 습관적으로 하지않고, 로컬 변수는 처음 사용되는 지점에서 가까이 선언합니다.

배열

가변 array 생성자를 사용하지 않습니다.

대신 리터럴을 씁니다.

적절한 상황에서는, new Array(length)를 사용하여 주어진 길이의 배열을 명시 적으로 할당 할 수 있습니다.

객체

Object 생성자를 사용하지 않습니다.

Object는 Array와 동일한 문제가 없지만, 일관성을 위해 여전히 허용되지 않습니다.

대신 객체 리터럴을 사용합니다.

클래스 생성자

서브 클래스의 생성자는 필드를 설정하기 전에 Super 키워드를 호출해야 합니다.

또한 인터페이스는 생성자를 정의하지 않습니다.

클래스 필드

생성자의 구체적인 객체의 필드를 설정합니다.

다시 할당되지 않는 필드에는 주석을 @const로 달고, 비공개 필드는 @private로 주석을 답니다.

정적 메소드

가독성을 저해하지 않는 곳에서는 개인 정적 메서드보다 모듈 로컬 함수를 선호합니다.

getter / setter

자바스크립트의 getter와 setter 속성을 이용하지 않습니다.

toString

재정의 할 수 있지만, 주의해야 합니다.

인터페이스

인터페이스는 @interface또는 @record로 선언 할 수 있습니다

문자열 리터럴

작은 따움표를 사용하며, 여러 문자열 리터럴이 관련되어 있으면 탬플릿 문자열을 사용합니다.

비허용 기능

with 키워드를 사용하지 않습니다. 코드를 이해하기 어렵게 만들고 ES5 이후 strict 모드에서 금지되었습니다.

eval또는 Function(…string)생성자를 사용하지 않습니다. 이러한 기능은 잠재적으로 위험합니다.

비표준 기능을 사용하지 않습니다.

생성자 또는 프로토 타입에 메서드를 추가하여 기본 형식을 수정하지 않습니다. 절대적으로 필요한 경우가 아니라면 전역 개체에 심볼을 추가하지 않습니다.

네이밍

식별자는 ASCII 문자와 숫자만 사용하며, 가능한 이유를 설명하는 이름으로 작성합니다.

패키지 이름은 모두 lower Camel Case입니다.

클래스, 인터페이스, 레코드 및 typedef 이름은 Upper Camel Case 입니다.

메소드 이름은 모두 lower Camel Case입니다. 그리고, 동사로 이루어져 있습니다.

상수 이름은 밑줄과 대문자로 이루어져 있습니다.

매개변수의 이름을 공용 메소드에서는 한 문자로 이루어지면 안됩니다.

지역 변수의 이름은 모두 lower Camel Case입니다.

JSDoc

JSDoc 은 모든 클래스, 필드 및 메서드에 사용됩니다.

참고 문서

기타 javadoc이나 미처 소개되지 못한 문단은 아래 원문에서 확인해보시기 바랍니다.

https://google.github.io/styleguide/jsguide.html

Written on April 20, 2018