Skip to content

Project Convention

hyoguoo edited this page Apr 4, 2024 · 6 revisions

본 프로젝트 개발 진행 시 Task 관리, 작업 진행 플로우, 브랜치 규칙, 커밋 메시지 규칙, 코드 컨벤션 등 전반적인 프로젝트 컨벤션에 대한 내용을 정리한다.


Task 관리

Issue에 Task를 등록하고, 해당 Task에 GitHub Project를 지정하여 칸반 보드 형식으로 관리한다.

작업 상태

  • No Status: 작업이 생성된 상태로, 빠르게 진행되지 않아도 되는 작업(= Pending)
  • Todo: 작업이 진행되어야 하는 상태
  • In Progress: 작업이 진행 중인 상태
  • Done: 작업이 완료되어 Merge된 상태

Milestone

본 프로젝트는 현재 구체적인 마감 일정이 있는 프로젝트가 아니기 때문에, 전체적인 작업 구분 및 진행 상황을 파악하기 위한 용도로 사용한다.


작업 진행 플로우

작업 진행은 크게 Isseu 생성 -> 작업 진행 -> PR 생성 -> 코드 리뷰 -> Merge의 단계로 이루어지며, 자세한 내용은 아래와 같다.

  1. Issue 생성 및 프로젝트에 추가
    • Title: 이슈 제목
    • Description: 작업 리스트
    • Assignee: 작업 담당자 지정
    • Label: 작업의 종류에 맞게 feat, fix, refactor, docs 등 지정
    • Project: Project 지정
    • Milestone: 현재 진행 중인 마일스톤 지정
  2. Issue에 대한 브랜치 생성
    • #ISSUE_NUMBER로 브랜치 생성
  3. 해당 브랜치에서 작업 진행
  4. 작업 완료 후 Pull Request 생성
    • Title: 작업 제목(특별한 경우가 아니면 이슈 제목과 동일하게 작성)
    • Description: 작업 리스트 및 필요 시 참고할 내용 작성
    • Reviewer: 팀원 전체 지정
    • Assignee: 작업자 지정(페어 프로그래밍 시 페어도 함께 지정)
    • Label: 작업한 내용에 맞게 feat, fix, refactor, docs 등 지정
    • Project: 지정 X
    • Milestone: 지정 X
  5. 코드 리뷰
    • 리뷰어는 코드 리뷰 후 Approve 또는 Request changes 선택
    • Request changes 선택 시, 작업자는 변경 사항 반영 후 재요청
  6. Merge
    • 브랜치 규칙에 설정된 Approve 조건이 충족되면 작업자가 Merge 진행
    • dev 브랜치인 경우 Rebase Merge, main 브랜치인 경우 Create a merge commit 선택

브랜치 규칙

기능 개발은 dev 브랜치에서 #ISSUE_NUMBER로 브랜치를 생성하여 작업을 진행한다.


커밋 메시지 규칙

커밋 메시지는 TYPE #ISSUE_NUMBER: COMMIT_MESSAGE 형식으로 작성한다.(예시: feat #1: 위키 기능 추가)
타입은 아래와 같이 구분한다.

Tag Name Description
feat 새로운 기능을 추가
mod 기능 변경
fix 버그 수정
refactor 프로덕션 코드 리팩토링
docs 문서 수정
test 테스트 코드, 리펙토링 테스트 코드 추가, Production Code(실제로 사용하는 코드) 변경 없음
chore 빌드 업무 수정, 패키지 매니저 수정, 패키지 관리자 구성 등 업데이트, Production Code 변경 없음, 필요한 주석 추가 및 변경

코드 컨벤션

  • 프로젝트 초기 작업 시 페어프로그래밍을 통한 코드 컨벤션 협의 및 적용
  • IntelliJ SonarLint 플러그인 적용
  • Google Java Style Guide 적용
  • 그 외에 논의가 필요한 사항은 PR 혹은 코멘트를 통해 협의