성균관대학교 지능형 소프트웨어학과 라운지 QR좌석배정/AI관리 서비스
| category | stack |
|---|---|
| Environment | |
| Common | |
| Language | |
| Style | |
| Data Fetching | |
| State Management | |
| Deployment | |
| Collaboration |
- 기본적으로 (괄호) 안에 Commit과 관련된 route(--page)를 적도록 한다.
Commit Example
git commit -m ‘feat(startpage): 대표이미지 설정’
- Commit 메시지 종류 설명
| 제목 | 내용 |
|---|---|
| feat | 새로운 기능에 대한 커밋 |
| refactor | 코드 리팩토링에 대한 커밋 |
| fix | 버그 수정에 대한 커밋 |
| design | CSS 등 사용자 UI 디자인 변경 커밋 |
| test | 테스트 커밋 |
| docs | 문서 수정에 대한 커밋 |
| env | 개발환경 구축 관련 커밋(라이브러리 추가 등) |
Github flow- 브랜치 운영
main: 완전히 안전하다고 판단되었을 때, 즉 배포가 가능한 최종 merge하는 곳develop: 배포하기 전 개발 중일 때 각자의 브랜치에서 merge하는 브랜치feature/페이지명/#issue-구현 기능: feature 브랜치. 새로운 기능 개발init/페이지명/#issue-구현 기능: init 브랜치. 초기세팅 구현fix/페이지명/#issue-구현 기능: fix 브랜치. 버그가 발생 시 수정refactor/페이지명/#issue-구현 기능: refactor 브랜치. 리팩토링 구현
main
ㄴ develop
ㄴ feature/페이지명/#이슈번호-구현 기능(소문자 스네이크 케이스)
-
컴포넌트
- Install Nextjs Snippets on vscode extension & use
tscmp→ TypeScript + ReactNode Snippet (설정 되어있음) - 인터페이스 네이밍은
컴포넌트 네임 + Props로 네이밍한다. props는 구조 분해 할당을 한 상태로 가져온다.- 꼭 필수적인 prop이 아닌 것들은
?:(optional) 타입으로 선언 ?:옵셔널 타입의 prop은 사용 시undefined가 될 수 있으므로, 되도록이면 구조 분해 할당으로 가져올 시default값을 할당해준다.const Button = ({ size = 'medium' }) => {...}
- Install Nextjs Snippets on vscode extension & use
-
폴더명
- 소문자로 시작
- 단수형으로 작성
- camelCase
-
타입
- 컴포넌트 인터페이스 생성 시
HTMLAttributes혹은ComponentWith(out)Props인터페이스 상속을 적극 고려해보자. - 항상 상속을 이용하였을 때는 rest 문법으로 작성한
...props을 컴포넌트의 prop으로 넘겨주자.
const Button = ({ ...props }: ButtonProps) => { return <button {...props}>Button</button> }
- PascalCase 사용
- 컴포넌트 인터페이스 생성 시
-
변수
var절대 사용 금지- 상수는 대문자의 스네이크 케이스 사용 :
GUIDE_MESSAGE - 변수명은 네이밍이 길어져도 무방하니, 의미가 퇴색되지 않게 “잘” 짓다.
boolean의 변수는is-로 짓는다. :isOpen,isSelected
-
함수
- 화살표 함수로 작성한다.
- 네이밍은
동사 + 목적어로 생성한다. :checkValidation,getResult - 분기 처리(조건문)이 다수 있다면
early return을 적극 권장한다.
-
기타
- 선언형 프로그래밍 !
forEach, map등을 적극 사용하자.for, while등은 지양한다.
- 객체 혹은 배열에서
구조 분해할당을 적극 사용한다. - 시맨틱 태그를 적극 사용한다.
- 무분별한
div에 주의한다. - tailwind-style-[] 값을 줄이고, 이를 정형화하여 tailwindconfig.css에 저장한다.
- img 태그의
alt를 꼭 사용하자.
- 선언형 프로그래밍 !
컴포넌트: 파스칼 케이스PascalCaseex) MainHeader이벤트 핸들러: 카멜 케이스handle로 시작 ex) handleClick- 이벤트 핸들러
prop: 카멜 케이스on으로 시작 ex) onClick 이외 변수명: 카멜 케이스camelCasecommon컴포넌트가 아닌, 도메인을 포함하는 컴포넌트는,prop또한 도메인을 포함시키도록 네이밍- ex)
onReservationComplete
- ex)
- 네이밍은 길어져도 무방하니, 최대한 해당
변수,함수,컴포넌트등의 의미를 파악하기 쉽게 짓는다. - 핸들러: 동사 + 목적어면, (handle)+
목적어-동사순으로 작성한다 ex)handleModalOpen - Boolean Prop :
isClicked,isOpen,isSelected - 유틸함수:
동사 + 목적어순으로 작성한다. ex)checkValidation,getCalculatedAge - 타입명
- 직관적으로 작성: PascalCase
- prop type :
ButtonProps(컴포넌트명 + Props) - api 응답 type :
-Data - 객체 변수의 경우 : 그 변수가 무엇인지를 쓰세요.
- ex.
MemberId - ex.
UserInfo
- ex.