-
Notifications
You must be signed in to change notification settings - Fork 1
코딩 컨벤션
Yujin edited this page Nov 10, 2024
·
9 revisions
항목 | 케이스 | 비고 |
---|---|---|
변수 | camelCase |
- 변수는 명사형으로 작성한다 |
함수 | camelCase |
- 함수는 동사형으로 작성한다 - 동사 + 명사 순서로 작성 |
디렉토리 | camelCase |
|
리액트 컴포넌트 | PascalCase |
|
상수 | SCREAMING_SNAKE_CASE |
|
클래스 | PascalCase |
|
컴포넌트 파일 | PascalCase |
|
컴포넌트 파일을 제외한 파일들 | camelCase |
✅ 리액트 컴포넌트 ⇒ export default 사용
✅ 리액트 컴포넌트 외 파일 (utils, hook 등) ⇒ export default 사용 X
✅ 각각 export vs export {a, b} ⇒ export {a, b}
🔹 컴포넌트 기반 폴더 구조
✔️ 역할 별(components, utils...)로 나누고, 내부에선 관심사 별로 분리
🔹 Barrel
패턴 적용!
✔️ 모든 폴더마다 `index.ts` 추가하기로 → 필요시 제거 가능
🔹 폴더 구조 예시
src/
├── components/
│ ├── common/ # 재사용되는 공통 컴포넌트 (버튼, 토스트 등)
│ ├── 도메인1/ # 특정 도메인 관련 컴포넌트 (헤더, 푸터, 특정 영역 등)
│ ├── Header/
│ │ ├── Header.tsx
│ │ └── index.ts
│ ├── RollingNewsBar/
│ │ ├── RollingNewsItem.tsx
│ │ ├── RollingNewsBar.tsx
│ │ └── index.ts
│ └── index.ts
├── utils/ # 유틸리티 함수 모음
├── assets/ # 이미지, 아이콘 등 정적 파일
│ ├── images/
│ └── icons/
├── hooks/ # 커스텀 훅
├── pages/ # 페이지 단위 컴포넌트
│ ├── 페이지1/
│ │ ├── index.ts
│ │ ├── 페이지1.tsx # 페이지1 섹션 A + 섹션 B 포함
│ │ ├── 페이지1 섹션A.tsx
│ │ └── 페이지1 섹션B.tsx
│ ├── 페이지2/
│ └── 페이지3.tsx # 크기가 작은 경우 폴더로 분리하지 않아도 OK
├── types/ # 타입 정의 파일
├── stores/ # 상태 관리 관련 파일
├── styles/ # 글로벌 CSS 변수, 재사용 CSS 파일
├── constants/ # 상수 관리
├── contexts/ # 컨텍스트 관리
└── services/ # API 로직 관리
- 💬 팀 목표
- ✨ ESLint 학습
- ✨ emotion 디자인시스템 구축 방법들
- ✨ nest의 @WebSocketGateway에서 예외 throw 시 클라이언트 콜백으로 응답 전달하기
- ✨ 워드 클라우드 UI 구현을 위한 방향성 고민
- ✨ jQCloud 1.0.4 라이브러리의 워드클라우드 UI 구현 로직 분석
- ✨ 오픈소스를 참고하여 React에서 워드 클라우드 UI 구현하기
- ✨ [Nest.js] Gateway 효율적으로 사용하기 - socket.io의 방 개념 도입
- ✨ 유튜브 영상을 어떻게 가져올 수 있을까
- ✨ 유튜브 타이밍 동기화 개발하기 일지
- ✨ 프로그래스바 구현하기
- ✨ 슬라이더로 이름 변경 및 리팩토링하기
- ✨ 커스텀 플레이어 컨트롤러 개발하기
- ✨ 방 중복 입장 막기 우당탕탕 개발 과정
- ✨ 리액트에서 에러 상위에서 처리하기
- ✨ 사용자 배치 로직 구현하기
- ✨ 소켓 이벤트알림의 타이밍 제어
- ✨ FE 코드 리팩토링 및 최적화, 성능 개선 과정
- ✨ HTTPS 적용하기
- ✨ FE CI/CD 파이프라인 구성
- 💬 기획 및 개발 회의록
- 💬 스프린트 회의록