Javascript 코딩 컨벤션

Ash·2021년 10월 20일
0

Today YJ Learned

목록 보기
5/10

구문

  • 한 줄에는 하나의 구문만 작성한다.
  • 모든 구문의 끝에는 세미콜론을 붙인다.

변수

  • 지역변수는 블록을 시작할 때 선언하지 않고 사용되는 곳과 가장 가까운 위치에서 선언한다.(사용 범위 최소화)
  • jsDoc을 위한 주석은 변수 선언 전, 변수 이름 전에 작성하자

배열

  • 배열 선언 시 리터럴 구문을 사용한다.

// bad
const arr = new Array();

// good
const arr = [];

  • 배열에 값을 추가할 때는 push를 사용한다.

const arr = [];

//bad
arr[0] = 'test';

// good
arr.push('test');

  • 배열에 string 속성을 사용하지 않는다. 필요한 경우 Map이나 Object를 사용한다.

객체

  • key는 큰 따옴표(")를 사용한다.
  • 객체 선언 시 리터럴 구문을 사용한다.

// bad
const obj = new Object();

// good
const obj = {};

함수명

  • 카멜 표기법, 동사를 사용하여 작성한다.
  • private 메소드인 경우 앞에 언더스코어(_)를 사용한다.
  • 함수 이름의 첫글자로 __, $ 를 붙이지 않는다.
  • 이벤트 핸들러 메소드의 경우 _on + 이벤트명으로 시작한다.
  • 함수식보다는 함수 선언을 사용한다.

// bad (foo만 호이스트됨)
const foo = function() {}

// good (함수 전체 호이스트)
function bar() {}

  • 파라미터의 기본값은 가장 뒤에 위치시킨다.

function foo(a, b = {}) {}

  • 화살표 함수의 바디가 하나의 식인 경우 중괄호와 return 문을 생략한다.

문자열

  • 문자열 선언 시 작은 따옴표를 사용한다. (현재 쌍따옴표로 사용하고 있으므로 배달특급/페이코오더는 쌍따옴표로 사용)
  • 작은 따옴표가 문자열 내 포함되는 경우 템플릿 리터럴()을 사용한다.
  • 동적으로 문자열 생성시 + 를 사용하지 않고 템플릿 리터럴()을 사용한다.

// bad
function foo(name) {
return 'hello my name is ' + name;
}

// good
function bar(name) {
return hello my name is ${name};
}

네이밍 규칙

  • 파일명은 모두 소문자를 사용한다.
  • 패키지명, 함수명, 변수명은 lowerCamelCase 을 사용한다.

// 패키지명
my.exampleCode.deepSpace
// 함수명
function myFunction() {...}
// 변수명
let helloString = "Hello World";

  • 객체를 선언할 때는 lowerCamelCase를 사용하고 export 할 객체는 PascalCase를 사용한다.

// 객체 선언
const thisIsMyObject = {};

// 객체 export
const AirbnbStyleGuide = {
es6: {
},
};

export default AirbnbStyleGuide;

  • 클래스와 생성자명은 PascalCase를 사용한다.
  • 가독성을 위해 약어는 모두 대문자 혹은 모두 소문자로 표기한다.

// bad
import SmsContainer from './containers/SmsContainer';

// bad
const HttpRequests = [
// ...
];

// good
import SMSContainer from './containers/SMSContainer';

// good
const HTTPRequests = [
// ...
];

// also good
const httpRequests = [
// ...
];

// best
import TextMessageContainer from './containers/TextMessageContainer';

// best
const requests = [
// ...
];

  • export되는 파일 내의 모든 상수는 모두 대문자로 표기한다.

// bad
const PRIVATE_VARIABLE = 'should not be unnecessarily uppercased within a file';

// bad
export const THING_TO_BE_CHANGED = 'should obviously not be uppercased';

// bad
export let REASSIGNABLE_VARIABLE = 'do not use let with uppercase variables';

// ---

// allowed but does not supply semantic value
export const apiKey = 'SOMEKEY';

// better in most cases
export const API_KEY = 'SOMEKEY';

// ---

// bad - unnecessarily uppercases key while adding no semantic value
export const MAPPING = {
KEY: 'value'
};

// good
export const MAPPING = {
key: 'value'
};

  • 이름에 복수형을 표기하지 않는다.

//bad
let delivery_notes = ["one", "two"];

// good
let delivery_note_list = ["one", "two"];

  • 줄임말을 사용하지 않는다.

//bad
let del_note = 1;

// good
let delivery_note = 1;

이벤트핸들러 네이밍 규칙

https://blog.sonim1.com/220참고

profile
기록남기기👩‍💻

0개의 댓글