폴더&파일명
components, user-profile, login-pageUserProfile.tsx, LoginPage.tsxapiService.ts, userUtils.ts, fetchData.ts주석
// TODO: 주석으로 해야 할 내용을 표시한다.확장자 (성능 개선, 일관성 유지)
.tsx로 정한다.
→ 가상DOM이 있는 파일.ts 로 정한다.변수/함수명
변수/함수명은 이해할 수 있을 정도로 충분히 고민해보자.
ex) isLoading (x), isUserDataLoading (o)
대부분의 경우 카멜 케이스를 사용한다.
// Bad
const is_snake_case = 'Bad'
// Good
const camelCase = 'Good'
상수는 영문 대문자 스네이크 표기법을 사용한다.
상수라 함은 변하지 않는 고정적인 값을 의미(예를 들면 픽셀값 등…)
const SYMBOLIC_CONSTANTS
class 생성자 / 생성자 함수는 대문자 카멜 케이스를 사용한다.
// class 생성자
class ClassName {}
// 생성자 함수
function Person() {}
URL, HTML 같은 범용적인 대문자 약어는 대문자 그대로 사용한다.
const parseHTML = () => {}
const parseXML = () => {}
이벤트 핸들러명
on으로 시작하도록 한다.// Good
const onClick
const onSubmit
// Bad
const clickHandler
const handleClick
const onClickHandler
들여쓰기는 무조건 tab 키로 2칸 띄운다. (prettier에 설정돼있음)
문장의 끝은 세미콜론으로 끝나도록 한다. (prettier에 설정돼있음)
전역 변수는 되도록 사용하지 않는다.
변수 선언 시, var는 절대 사용하지 않는다.
되도록 const를 사용하되, 부득이한 경우 let을 사용한다.
외부 모듈과 내부 모듈을 구분지어 import 한다**. (외부 모듈부터 정리)**
import { useState, useEffect } from 'react';
import { useNavigate } from 'react-router-dom';
import axios from 'axios';
import pluginFactory from '../../factories/pluginFactory';
import predicate from '../../helpers/predicate';
import raphaelRenderUtil from '../../plugins/raphaelRenderUtil';
this 바인딩 없이 상위 컨텍스트에 바인딩 되기 때문에 함수 표현식보다 혼란이 적으며, 덜 장황하고 추론이 쉽다.// Bad
[1, 2, 3].map(function(x) {
const y = x + 1;
return x + y;
});
// Good
[1, 2, 3].map((x) => {
const y = x + 1;
return x + y;
});
// Bad
const emptyArr = new Array();
const arr = new Array(1, 2, 3, 4, 5);
// Bad - 객체 생성자 사용
const emptyObj = new Object();
const obj = new Object();
// Good
const emptyArr = [];
const arr = [1, 2, 3, 4, 5];
// Good
const emptyObj = {};
const obj = {
pro1: 'val1',
pro2: 'val2'
};
// Bad
function getFullName(user) {
const firstName = user.firstName;
const lastName = user.lastName;
return `${firstName} ${lastName}`;
}
// Bad
const first = arr[0];
const second = arr[1];
// Good
function getFullName(obj) {
const {firstName, lastName} = obj;
return `${firstName} ${lastName}`;
}
// Good
const [first, second] = arr;
// Good
function getFullName({firstName, lastName}) {
return `${firstName} ${lastName}`;
}
// Good
const changeFirstName = user.firstName;
// Good
const {firstName: changeFirstName} = user;
// Bad
function sayHi(name) {
return 'How are you, ' + name + '?';
}
// Bad
function sayHi(name) {
return ['How are you, ', name, '?'].join();
}
// Bad - 일반적인 경우, 홑따옴표를 사용
function sayHi(name) {
return `How are you name?`;
}
// Good
function sayHi(name) {
return `How are you, ${name}?`;
}
===와 !== 연산자만 사용한다.