-
Notifications
You must be signed in to change notification settings - Fork 2
코딩 컨벤션
김가은 edited this page Nov 24, 2023
·
20 revisions
-
기본적인 스타일은 airbnb의 코드 컨벤션을 따른다.
-
Prettier + ESLint + Stylelint로 관리한다.
-
줄임말은 쓰지 않는다. (btn → button / idx → index)
-
type 선언은 interface로 통일한다.
-
함수명 : camelCase
- ex) appendNewList
-
클래스명 : PascalCase
- ex) HelloWorld
-
파일명
- 클래스 정의가 들어있는 파일 : PascalCase
- 함수가 들어있는 모듈 파일 : camelCase
-
import/export
- ES6 형식으로 작성한다. (require이 아닌 import)
- 각 모듈(폴더)별로 index.js 만들어서 한번에 export/import한다.
- export는 객체에서 직접 한다.
-
이벤트 핸들러 네이밍
- 핸들러를 전달하는 프로퍼티의 이름에는 접두사 on을 붙인다.
- 핸들러 함수에는 접두사 handle을 붙인다.
- 네이밍은 자세하게 한다.
- Bad case : handleClick
- Good case : handleUserLogin
-
gitmoji 익스텐션을 사용한다. (https://gitmoji.dev/)
-
git hooks로 관리한다.
-
커밋 단위는 가능한 작게 한다.
-
commit 형식
- 첫 줄 (헤더) 은 영어로 작성하며, 대문자로 시작한다.
- 두 번째 줄은 띄운다.
- 세 번째 줄 (바디) 부터는 커밋 상세 내용을 한국어로 기록한다.
✨ Add Button component color prop - 어쩌구 저쩌구 - 어쩌구 저쩌구
commit-msg
#!/bin/sh
regex="^[🎉🔖✨🐛🔒📇♻️📚🌐♿🐎🎨🔧🚨💩🗑️🚧] [A-Z][\x21-\x7E]*\n(\n- .+)+"
check_message_format() {
message_file="$1"
message=$(cat "$message_file")
if ! echo "$message" | grep -qE "$regex"; then
echo "\033[0;31m⚠️ Your message is not formatted correctly!!\033[0m"
echo ""
echo "\033[0;33m--- Commit Foramt ---"
echo ""
echo "<gitmoji> eng Title"
echo ""
echo "- kor detail"
echo ""
echo "\033[0;32m--- gitmoji info ---"
echo ""
echo "🎉 Initial Commit
🔖 Version Tag
✨ New Feature
🐛 Bugfix
🔒 Security Fix
📇 Metadata
♻️ Refactoring
📚 Documentation
🌐 Internationalization
♿ Accessibility
🐎 Performance
🎨 Cosmetic
🔧 Tooling
🚨 Tests
💩 Deprecation
🗑️ Removal
🚧 Work In Progress (WIP)\033[0m"
exit 1
fi
}
check_message_format "$1"
적용 방법
touch .git/hooks/commit-msg
chmod +x .git/hooks/commit-msg
vi .git/hooks/commit-msg
[FE/BE] 해결한 Task 내용
[FE] 은하 공유 링크 생성 버튼 구현
### 📎 이슈번호
### 📃 변경사항
### 🫨 고민한 부분
### 📌 중점적으로 볼 부분
### 🎇 동작 화면
### 💫 기타사항
기능 개발 필요 시
[FEAT] ~
## ✨ 기능 설명
## ✨ 개발 목록
- [ ]
## ✨ 스크린샷
## ✨ 기타 설명 / 질문
✨ Feature
-
FE
또는BE
버그 발생 시
[BUG] ~
## 🐛 버그 설명
### 🐛 기대한 동작
-
### 🐛 실제 동작
-
## 🐛 스크린샷
## 🐛 기타 설명 / 질문
🐛 BugFix
-
FE
또는BE
개선 소요 발생 시
[ENHAN] ~
## ⚡️ 개선 소요 설명
## ⚡️ 개선 목록
- [ ]
## ⚡️ 스크린샷
## ⚡️ 기타 설명 / 질문
⚡️ Enhancement
-
FE
또는BE
리팩토링 소요 발생 시
[REFACT] ~
## ♻️ 리팩토링 소요 설명
## ♻️ 리팩토링 목록
- [ ]
## ♻️ 스크린샷
## ♻️ 기타 설명 / 질문
♻️ Refactor
-
FE
또는BE
© 2023 debussysanjang
- 🐙 [가은] Three.js와의 설레는 첫만남
- 🐙 [가은] JS로 자전과 공전을 구현할 수 있다고?
- ⚽️ [준섭] NestJS 강의 정리본
- 🐧 [동민] R3F Material 간단 정리
- 👾 [재하] 만들면서 배우는 NestJS 기초
- 👾 [재하] GitHub Actions을 이용한 자동 배포
- ⚽️ [준섭] 테스트 코드 작성 이유
- ⚽️ [준섭] TypeScript의 type? interface?
- 🐙 [가은] 우리 팀이 Zustand를 쓰는 이유
- 👾 [재하] NestJS, TDD로 개발하기
- 👾 [재하] AWS와 NCP의 주요 서비스
- 🐰 [백범] Emotion 선택시 고려사항
- 🐧 [동민] Yarn berry로 모노레포 구성하기
- 🐧 [동민] Vite, 왜 쓰는거지?
- ⚽️ [준섭] 동시성 제어
- 👾 [재하] NestJS에 Swagger 적용하기
- 🐙 [가은] 너와의 추억을 우주의 별로 띄울게
- 🐧 [동민] React로 멋진 3D 은하 만들기(feat. R3F)
- ⚽️ [준섭] NGINX 설정
- 👾 [재하] Transaction (트랜잭션)
- 👾 [재하] SSH 보안: Key Forwarding, Tunneling, 포트 변경
- ⚽️ [준섭] MySQL의 검색 - LIKE, FULLTEXT SEARCH(전문검색)
- 👾 [재하] Kubernetes 기초(minikube), docker image 최적화(멀티스테이징)
- 👾 [재하] NestJS, 유닛 테스트 각종 mocking, e2e 테스트 폼데이터 및 파일첨부
- 2주차(화) - git, monorepo, yarn berry, TDD
- 2주차(수) - TDD, e2e 테스트
- 2주차(목) - git merge, TDD
- 2주차(일) - NCP 배포환경 구성, MySQL, nginx, docker, docker-compose
- 3주차(화) - Redis, Multer 파일 업로드, Validation
- 3주차(수) - AES 암복호화, TypeORM Entity Relation
- 3주차(목) - NCP Object Storage, HTTPS, GitHub Actions
- 3주차(토) - Sharp(이미지 최적화)
- 3주차(일) - MongoDB
- 4주차(화) - 플랫폼 종속성 문제 해결(Sharp), 쿼리 최적화
- 4주차(수) - 코드 개선, 트랜잭션 제어
- 4주차(목) - 트랜잭션 제어
- 4주차(일) - docker 이미지 최적화
- 5주차(화) - 어드민 페이지(전체 글, 시스템 정보)
- 5주차(목) - 감정분석 API, e2e 테스트
- 5주차(토) - 유닛 테스트(+ mocking), e2e 테스트(+ 파일 첨부)
- 6주차(화) - ERD
- 2주차(화) - auth, board 모듈 생성 및 테스트 코드 환경 설정
- 2주차(목) - Board, Auth 테스트 코드 작성 및 API 완성
- 3주차(월) - Redis 연결 후 RedisRepository 작성
- 3주차(화) - SignUpUserDto에 ClassValidator 적용
- 3주차(화) - SignIn시 RefreshToken 발급 및 Redis에 저장
- 3주차(화) - 커스텀 AuthGuard 작성
- 3주차(수) - SignOut시 토큰 제거
- 3주차(수) - 깃헙 로그인 구현
- 3주차(토) - OAuth 코드 통합 및 재사용
- 4주차(수) - NestJS + TypeORM으로 MySQL 전문검색 구현
- 4주차(목) - NestJS Interceptor와 로거
- [전체] 10/12(목)
- [전체] 10/15(일)
- [전체] 10/30(월)
- [FE] 11/01(수)~11/03(금)
- [전체] 11/06(월)
- [전체] 11/07(화)
- [전체] 11/09(목)
- [전체] 11/11(토)
- [전체] 11/13(월)
- [BE] 11/14(화)
- [BE] 11/15(수)
- [FE] 11/16(목)
- [FE] 11/19(일)
- [BE] 11/19(일)
- [FE] 11/20(월)
- [BE] 11/20(월)
- [BE] 11/27(월)
- [FE] 12/04(월)
- [BE] 12/04(월)
- [FE] 12/09(금)
- [전체] 12/10(일)
- [FE] 12/11(월)
- [전체] 12/11(월)
- [전체] 12/12(화)