Skip to content

협업 컨벤션

dalcomi20 edited this page Jan 7, 2022 · 14 revisions

💎 협업 컨벤션

  • 전체적인 협업 플로우는 아래의 5단계를 따릅니다.

이슈 발행이슈 작업(코딩)풀리퀘스트코드 리뷰이슈 반영(Merge)

  • 이 프로세스는 모두 깃허브의 칸반 보드에서 관리합니다.
  • 이슈마다 branch를 생성해 진행한다.

Issue의 기준? 프로젝트를 진행함에 있어 의견이 필요한 모든 것이 이슈라고 볼 수 있다. 새로 추가될 기능, 개선점, 버그 등등. 모든 활동에 대해서 이슈를 등록하고 그 이슈를 기반으로 작업을 진행한다.

  • 효율적 관리를 위해 태그를 다는 것이 좋다.

이슈 발행 이후 작업 방법

  1. branch 생성 : 내가 담당한 기능 개발을 위해 dev branch에서 새로운 branch 생성합니다. branch이름 앞에 이슈번호를 붙인다. ex) #12 Mirror git checkout -b [브랜치명]
  2. 작업 수행 후 add, commit, push : branch 내 작업 완료 후 origin 원격 브랜치에 수정사항을 반영합니다. git push -u origin [브랜치명]
  3. 코드 리뷰를 위한 PR 생성
    • PR 제목은 한 일 또는 해결방안 위주로 작성한다.
    • 메시지 최대한 자세하게 작성
  4. 코드 리뷰 : 리뷰어는 PR에 대해 3가지 의사표현 가능
    • Comment : 그냥 코멘트만 달아줌.
    • Request changes : 코드에서 버그를 발견하면 수정 요청.
    • Approve : 코드 merge에 동의.
  5. Merge PR : 모든 리뷰어에게 Approve를 받으면 PR 작성자가 직접 dev branch에 merge하고 conflict 해결 및 기존 기능들과의 상호 작동여부 확인한다.
    • Merge main : 프로젝트 총괄 및 각 팀의 사람들에게 동의를 얻으면 dev branch를 main에 merge한다.

현실은 2번과 4번 사이의 무한 반복일 것이다!! 이게 바로 프로젝트와 협업이다👍



💎 깃 컨벤션

  • 이슈는 "해야할 일" 또는 "문제점 (ex. 충돌발생) "을 위주로 한글 제목을 작성합니다.

캡처

  • 마찬가지로 PR은 "해결방안 (ex. 서브파일생성) "을 위주로 제목을 작성합니다.
  • commit 메세지는 "[태그] 코드에 대한 설명" 으로 합니다.
    • 태그는 다음과 같습니다.
      • feat : 새로운 기능에 대한 커밋
      • fix : 버그 수정에 대한 커밋
      • build : 빌드 관련 파일 수정에 대한 커밋
      • chore : 그 외 자잘한 수정에 대한 커밋
      • docs : 문서 수정에 대한 커밋
      • style : 코드 스타일 혹은 포맷 등에 관한 커밋
      • test : 테스트 코드 수정에 대한 커밋
    • 코드에 대한 설명은 되도록 영어로 적습니다.
    • 코드에 대한 설명은 summary로 요약 한 문장, Description으로 자세한 내용을 적습니다.
    • 커밋은 나누어 할수록 좋습니다. 최대한 작은 단위로 커밋합시다.
  • 되도록이면 당일 작업사항은 당일에 PR합니다. 코드가 쌓이면 원활한 1:1 리뷰가 어렵기 때문입니다.
  • 리뷰는 최소 세사람에게 받도록 합니다.
  • 리뷰를 받지 않은 코드는 main에 merge할 수 없습니다.
  • PR은 리뷰어 approve완료 후 PR작성자가 merge 합니다. (해당 branch는 delete)
  • 프로젝트는 진행상황은 칸반보드로 관리합니다.
  • 칸반보드에서 작업을 시작한 issue의 카드는 2번째 탭 '진행중 / 코드작성중'으로 옮겨놓아 작업현황을 팀원들과 공유합니다.


💎 코드 컨벤션

  • 일반 변수, 상수의 이름에는 소문자 카멜케이스를 사용합니다.(논의 필요)
float nextTime;
  • 클래스, 함수, 인스턴스 이름에는 대문자 카멜케이스를 사용합니다.
public GameObject DisconnectPanel;
public InputField NicknameInput;

서버팀 코드 컨벤션: 위에서 약간 세분화된 버전으로 class의 member와 function scope의 local variable을 구분합니다

  • private member: _소문자 카멜케이스
private readonly string _myString;
  • public members (functions and properties and data fields)
public GameObject DisconnectPanel;
public Foo(T bar);
  • local variables (그 외의 모든 local variable): 소문자 카멜케이스
int diceNum = 0;
  • 주석: //<한칸 띄고>content
// comment
  • 섹션 헤더 (비슷한 함수들끼리 모아놓는 등 코드의 구역을 나눌 때): region directive, ///<한칸 띄고> 설명
#region UICallbacks
/// callback functions
/// requires components ....
#endregion
  • 파일의 마지막은 빈 줄로 마치고 빈 줄에는 공백이 없도록 합니다.
  • 자신이 작성한 모든 코드에는 최대한 친절하게 주석을 달아줍시다. 학회의 앞으로 몇년간 유지될 baseline코드를 만드는 것이기 때문에 자세한 주석 작성이 중요합니다.