본문으로 건너뛰기

코드 작성 컨벤션

  • 필수 로 기재된 컨벤션의 경우 반드시 지켜야 합니다.
  • 권장으로 기재된 컨벤션의 경우 반드시 지켜야 할 사항은 아니긴 하지만 권장되는 컨벤션 입니다.

1. 네이밍 (필수)

네이밍의 경우는 아래와 같이 통일합니다.

url 구성폴더파일(컴포넌트 파일 제외)컴포넌트 파일
kebab-casekebab-casecamelCasePascalCase
함수변수enum 및 상수
camelCasesnake_caseUPPER_SNAKE_CASE

컴포넌트 Props

이벤트 핸들러 함수데이터 전달용 변수
camelCasesnake_case
<Component some_data={other_data} onButtonClick={handleButtonClick} />

이벤트핸들러 네이밍 가이드(권장)

  • 컴포넌트 내부에서 사용하는 이벤트 핸들링 함수는 handleXXXClick 의 형식으로 작성합니다.
  • props 로 전달받는 핸들링 함수는 onXXXClick 형식으로 작성합니다.
interface Props {
onSubmitButtonClick: () => void;
}
const Comp: FC<Props> ({ onSubmitButtonClick }) => {
const handleCancelClick = () => {
...
};

return (
<div>
<button onClick={handleCancelClick}>cancel</button>
<button onClick={onSubmitButtonClick}>submit</button>
</div>
)
}

예외케이스

common 폴더의 경우 폴더 리스트 최상단에 바로 보여지도록 앞에 _ 를 추가 합니다.

domains
├── daily-mission
│ ├── _common
│ │ ├── graphqls
│ │ ├── ...
│ │ └── utils
│ │
│ └── up-and-down
│ ├── _common
│ │ ├── graphqls
│ │ ├── ...
│ │ └── utils
│ │
│ ├── main
│ ├── ...
│ └── special-ranking

└── README.md

2. barrel file 비생성 (필수)

barrel file 을 생성하지 않습니다.

// x
// module/hooks/index.ts
export * from './useFoo';
export * from './useBar';

// 외부에서 참조 할 때
import { useFoo, useBar } from '@/module/hooks';

// o
import { useFoo } from '@/module/hooks/useFoo';
import { useBar } from '@/module/hooks/useBar';

3. named export (필수)

Next Page 와 같은 강제로 default export 하는 경우를 제외하고 모두 named export로 작성합니다.

// x
const HomePage: FC = () => {
return ( ... )
}

export default HomePage

// o
export const HomePage: FC = () => {
return ( ... )
}

4. 컴포넌트 스타일링(필수)

monolith 에서 컴포넌트 스타일링이 필요한 경우 emotion, styled-components 와 같은 별도의 스타일 컴포넌트의 사용을 하지않고 inline style 로 주입 혹은 표준스펙인 css 를 통해서만 처리합니다.