-
Notifications
You must be signed in to change notification settings - Fork 11
협업 컨벤션
dalcomi20 edited this page Jan 7, 2022
·
14 revisions
- 전체적인 협업 플로우는 아래의 5단계를 따릅니다.
이슈 발행
➡이슈 작업(코딩)
➡풀리퀘스트
➡코드 리뷰
➡이슈 반영(Merge)
- 이 프로세스는 모두 깃허브의 칸반 보드에서 관리합니다.
- 이슈마다 branch를 생성해 진행한다.
Issue의 기준? 프로젝트를 진행함에 있어 의견이 필요한 모든 것이 이슈라고 볼 수 있다. 새로 추가될 기능, 개선점, 버그 등등. 모든 활동에 대해서 이슈를 등록하고 그 이슈를 기반으로 작업을 진행한다.
- 효율적 관리를 위해 태그를 다는 것이 좋다.
- branch 생성 : 내가 담당한 기능 개발을 위해 dev branch에서 새로운 branch 생성합니다. branch이름 앞에 이슈번호를 붙인다. ex) #12 Mirror
git checkout -b [브랜치명]
- 작업 수행 후 add, commit, push : branch 내 작업 완료 후 origin 원격 브랜치에 수정사항을 반영합니다.
git push -u origin [브랜치명]
- 코드 리뷰를 위한 PR 생성
- PR 제목은 한 일 또는 해결방안 위주로 작성한다.
- 메시지 최대한 자세하게 작성
- 코드 리뷰 : 리뷰어는 PR에 대해 3가지 의사표현 가능
-
Comment
: 그냥 코멘트만 달아줌. -
Request changes
: 코드에서 버그를 발견하면 수정 요청. -
Approve
: 코드 merge에 동의.
-
- 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;
- 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코드를 만드는 것이기 때문에 자세한 주석 작성이 중요합니다.