Skip to content

11.7 월 회의록

Ji Yoon Choi edited this page Nov 7, 2022 · 7 revisions

컨벤션

Git 브랜치 전략 - Git flow + PR

이유

  • 브랜치의 구분을 명확히 하기 위해서

종류

  • main
    • 개발이 완료된 dev 브랜치를 merge 하여 배포 가능한 상태만을 관리하는 브랜치
  • dev
    • 개발이 진행되는 브랜치, 이 브랜치를 기반으로 feat, refactor 등으로 파생됩니다.
    • feat/[기능명][이슈번호(optional)]
      • 새로운 기능을 추가하고자 할 때, 사용하는 브랜치입니다.
    • refactor/[기능명][이슈번호(optional)]
      • 리팩토링이 이루어지는 브랜치입니다.
    • fix/[기능명][이슈번호(optional)]
      • 버그를 수정하기 위한 브랜치입니다.
    • design/[기능명][이슈번호(optional)]
      • 디자인 관련 작업을 하는 브랜치입니다.

코딩 컨벤션

대소문자 컨벤션

  • camelCase
    • 일반적인 함수(hook 포함)
    • 일반적인 변수
  • PascalCase
    • 컴포넌트 관련한 파일, 폴더, 명
    • class 명
  • snake_case
    • DB
    • 상수(영문 대문자 사용)
  • kebab-case
    • html 요소

변수 네이밍

  • 배열의 이름은 복수형으로 만듭니다.
// 예시
  • 반환 값이 boolean 형인 함수나 변수는 is 또는 has 로 시작합니다.
  • 매직넘버 사용 금지(변수나 상수로 분리)

순서 컨벤션

  • const 는 let 보다 상단에 작성합니다.
  • 변수는 사용 시점에 선언 및 할당합니다.
  • 선언과 할당을 동시에 하는 변수를 선언만 하는 변수보다 먼저 선언합니다.
  • import 순서
    • 외부모듈 -> 내부모듈 -> style -> assets 순서로 작성합니다.
    // 예시
    
    • 선언 그룹 사이에 공백을 둡니다.

.prettierrc & eslint

  • 지윤이 가져다 쓰기

프론트엔드 함수 형식

  • 선언형 (function foo() {})
    • Hook 등의 로직
    • 유틸 함수 등, 통상적인 함수들
  • 화살표 함수 (foo = () ⇒ {})
    • 컴포넌트
    • 콜백 함수
  • 클래스 (class Foo {})
    • 생성자로 인스턴스를 만들어야 할 때 (this가 필요할 때)

Router 컨벤션

      <Route path='/auth'>
        <Route path='/github' />
        <Route path='login' />
      </Route>

커밋 컨벤션

  • 제목은 확실히 적어줍니다.
  • 본문은 optional.
# <타입>: <제목> (#1)

##### 제목은 최대 50 글자까지만 입력 ############## -> |


# 본문은 위에 작성
######## 본문은 한 줄에 최대 72 글자까지만 입력 ########################### -> |
# --- COMMIT END ---
# <타입> 리스트
#   feat    : 기능 (새로운 기능)
#   fix     : 버그 (버그 수정)
#   refactor: 리팩토링
#   style   : 스타일 (코드 형식, 세미콜론 추가: 비즈니스 로직에 변경 없음)
#   docs    : 문서 (문서 추가, 수정, 삭제)
#   test    : 테스트 (테스트 코드 추가, 수정, 삭제: 비즈니스 로직에 변경 없음)
#   chore   : 기타 변경사항 (빌드 스크립트 수정 등)
# ------------------
#     타입은 영어로 작성하고 제목과 본문은 한글로 작성한다.
#     제목 끝에 마침표(.) 금지
#     제목과 본문을 한 줄 띄워 분리하기
#     본문은 "어떻게" 보다 "무엇을", "왜"를 설명한다.
#     본문에 여러줄의 메시지를 작성할 땐 "-"로 구분
#     관련된 이슈번호는 제목 맨 뒤에 추가한다. ex. (#1)
# ------------------

폴더 구조

- client
|- public
   |- assets
      |- images # png jpg
      |- svgs # svg export
   |- index.html
|- src
   |- common # 공용 컴포넌트 (2개 이상의 페이지에서 같이 쓰임)
      |- styles
         |- colors.ts # 색상값
         |- sizes.ts # border size, box size 등 사이즈 공용값
         |- reset.css # 기본 스타일 리셋
      |- hooks
      |- utils
      |- components
   |- pages
      |- TestPage1
         |- TestComponent1 # TestPage1 에서만 사용되는 컴포넌트
         |- TestComponent2
      |- TestPage2
   |- store # 전역 상태관리 상태값들 (redux dispatch 또는 recoil atom)
      |- testState1
         |- atoms.ts
         |- selectors.ts
   |- services # axios 또는 fetch 함수들
      |- fetchTest.ts
   |- types # 타입 값들
      |- test.d.ts
   |- api.ts # axios 를 쓰게 된다면 설정값
   |- App.tsx # 일단은 라우터도 여기로
   |- index.tsx # React가 읽어들이는 엔드포인트
|- prettierrc.json
|- eslintrc.json
|- tsconfig.json
|- package.json
|- .env
- server
|- app.ts
|- 도메인 별로 폴더
|- user // 예시
   |- userController
   |- userService
   |- userRepository
|- utils
   |- ...

얼리버드

프로젝트

개발일지

스프린트 계획

멘토링

데일리 스크럼

데일리 개인 회고

위클리 그룹 회고

스터디

Clone this wiki locally