1. 소스파일
- React Component를 정의한 파일은
PascalCase로 적습니다.
- React Component를 포함하고 있지 않다면
camelCase로 파일을 정의합니다.
2. 형식
- 변수명이 조금 길어져도 줄임말은 지양합니다.
- 함수형 프로그래밍으로 작성합니다.
- 작은 따옴표를 기본으로 사용합니다.
- 들여쓰기는
2칸을 사용합니다.
- Import → Type → 컴포넌트{ 변수 → 함수 → return<HTML> } 순서로 작성합니다.
- 인라인 작성은 최대한 억제합니다 → Chakra-ui 사용을 위해 인라인 작성이 허용됩니다.
- Chakra-ui를 사용하면 인라인으로 스타일을 작성하게 된다. 이는 CSS 분리가 안되어 있어 가독성을 낮추게 만든다. → 논의 필요 → 인라인으로 작성하기 결정
- 중첩 레벨을 가능한 억제합니다.
3. 타입
- interface : object, class의 모양을 특정하는 경우 사용
- type : 그 외 사용
- any 타입을 사용하지 않습니다.
- 가급적 제네릭 타입을, 그것도 안되면 unknown 타입을 사용해야 합니다.
- 제네릭을 사용할 때 T, U, V 같이 한 문자가 아닌 명시적인 이름을 사용합니다.
- Props 타입 정의 이름은 컴포넌트이름 + Props 로 합니다.
- Hook의 prop type 네이밍은 Use<...>Props로 합니다.
4. 변수
- file-scope 상수는
UPPER_CASE로 적습니다.
- 그 외에는 모두
camelCase로 적습니다.
- Boolean names : true, false를 나타내기 때문에
is,has,can를 사용합니다.
5. 문자열
- 문자열 연결 연산자보다 백틱을 최대한 이용합니다.
6. 숫자
- 매직 넘버는 모두 상수로 작성합니다.
7. 배열
- 변수명 뒤에
s를 붙여서 작성한다.
8. 함수
- Function names :
camelCase로 작성합니다.
- 컴포넌트 명 :
CapitalCase로 작성합니다. - 함수 표현식과 화살표 함수를 이용하여 작성합니다.
- 일반 함수 작성 :
화살표 함수로 작성합니다.
- 그 외 함수 작성 :
함수 표현식으로 작성합니다.
- 이벤트 핸들러 함수 작성 :
handle + 컴포넌트명 + 이벤트명으로 작성합니다.
- 하나의 함수에서 하나의 기능을 하도록 만듭니다. 상위 함수(?)를 읽는 것만으로도 무슨 기능을 하는 지 알게 작성합니다. (하위 함수 로직 코드를 안봐도 되도록)
9. 제어문
- if, for문, while문 중괄호 생략 금지
- if, for문, while문 구문 끝에는 세미콜론을 사용하지 않습니다.
10. 레이아웃
- margin, padding을 설정할 때는 [top, left] 로만 적용합니다. → 나중에 논의 필요.
11. 주석
- 문제를 일으킬 수 있지만 당장은 고치지 않을 때는 FIXME : 코멘트를 적습니다.
- 기능이나 최적화, 리팩토링 면에서 미래에 하면 좋을 부분을 표시할 때는 TODO : 주석을 적습니다.
- 코드로 표현이 어려운 소프트웨어 스펙의 애매한 부분을 강조해서 표시할 때는 NOTE : 코멘트를 적습니다.
