필자는 PR에 대해 깊게 생각해 본 적이 없다. 하지만 프로그래머스 과제를 제출하면서 PR을 하게 되는데 PR을 나만 보는 것도 아니고 남들에게 보여주는 건데 성의있게 쓰기 위해 그리고 나중에 회사에 들어가게 된다면 이 정리글이 추후 필자에게 도움이 될 것 같아서 PR에 관한 좋은 글들을 많이 읽고 PR관련 정리 글을 쓰려고 한다.
PR이란?
Pull Request의 약자로, 기존 Github 저장소에 보관된 코드 베이스에서 내 작업으로 인해 생긴 변경사항들을 코드 베이스에 포함시켜달라고 보내는 요청이다.
이러한 요청이 승인이 되기까지 코드 검증 절차를 거치게 된다. 요청된 PR에서 아무렇게나 작성된 혹은 제대로 동작하지 않은 코드가 포함되는 등을 막기 위해 코드 리뷰를 거쳐 이 코드가 메인 브랜치에 포함되어도 될지 검증 절차를 통과하도록 규정한다.
그렇다면 좋은 PR은 어떻게 만들 것인가?
1. PR의 규모를 적절하게 가져가기
- PR의 규모가 너무 크면 reviewer와 reviewee 모두가 힘들어 진다.
- 리뷰어의 입장에서는, 대량의 변경사항을 파악하기도 힘들 뿐더러 장시간을 투자해야 하므로 쉽게 피로해질 수 있다.
- 뱅크 샐러드 에서는 '1개의 PR은 1,000 Line을 넘을 수 없다'고 정했습니다.
2. Reviewer를 배려하기
- 코드 컨벤션을 잘 지키기. 정해 놓은 규칙을 무시하거나 인지못하면 이에 대한 리뷰가 먼저 들어올 수 있다. 이는 불필요한 코멘트이고 시간 낭비가 될 수 있다.
- 리뷰 가이드라인을 잘 작성하기. 모든 코드 변경사항에는 의도가 필요하다. 의도치 않게 변경된 부분이 있다면 되돌려 놓아야 하고, 줄바꿈과 같이 아주 단순한 변경사항이라도 신경써야 한다.
- 작업중, 리뷰 가능 여부를 잘 명시하기. 아직 코드를 작성 중일 때에는 [WiP]를 타이틀 앞에 추가하고, 만약 작업이 끝났으면 이를 제거하고 review-needed 태그를 설정한다. 리뷰를 반영하는 중에도 이 과정을 반복하여 명시해야 한다.
3. 내가 쓴 코드 책임지기
- 자신이 작성한 코드에 대해서 100% 이해하기. 모든 변경사항에는 근거가 필요하다. 스스로 납득 할만한 코드를 짜고 이해해야 한다.
- 무엇을 알고 무엇을 모르는지를 명확히 하기. 자신이 아는 부분에 대해서는 자신의 근거를 설명하면 되고, 모르는 부분에 대해서는 문서들과 자료들에 의해 학습을 한 뒤 그들을 근거로 활용해야 한다.
4. 반드시 테스트하기
- 요청한 코드는 모두 정상적으로 동작해야 한다. 직접 테스트를 해보고 이상이 없다는 것을 가이드라인으로 만들어 리뷰어에게 알려 준다면 서로에게 도움이 될 것이다.
5. 자신의 예상 작업량을 잘 측정하기
- 잘 재고, 잘 쪼개라. 자신이 해야할 업무 분량에 대해서 명확하게 계산이 되면 일정 단위로 잘 분리시키고 PR을 빠르고 정확하게 리뷰받을 수 있다. 예를 들면 작업이 UI 컴포넌트 개발이라면 그 내부에 필요한 하위 컴포넌트들을 먼저 성질 단위로 나누어 작업한다.
- 이슈 베이스 브랜치를 활용하라. 잘 분리한다 하더라도 결국에는 합쳐서 정상적으로 동작할 수 있어야 한다.그러기 위해서 이슈에 전체 기능에 대한 명세와, 그 분리될 작업에 대해서도 상세히 기술한다. 예를 들면,
feat/#123
처럼 브랜치를 만든 뒤, 하위에 feat/#123/develop
과 feat/#123/feat/separate-task
와 같이 새로운 베이스 브랜치와 세부 작업에 대한 브랜치를 두고 작업하게 되면, 작은 크기의 PR을 만드는데 도움이 될 것이다.
6. 유용한 PR의 양식
# 주요 변경사항
- 이 PR이 해결하는 문제
# 링크
- 디자인 시안 링크 / 슬랙 관련 대화 링크
# 시급한 정도
- 보통
- 긴급
- 천천히
# 중점적으로 봐줬으면 하는 부분
- 변경사항이 큰 경우 집중해야 할 부분, 또는 불안해서 봐주었으면 하는 부분 등
번외) 과제 제출을 위한 PR
- 궁금한 점이나 버그가 생긴 부분을 README.md에 잘 설명하기. 시간 내에 과제를 다 못할 수 있다. 그러면 1. 어느 부분을 모르겠는지 찾아보고 2. 이렇게 해봤는데 안되는데, 3. 어떻게 해결해야 하는지 기승전결을 잘 정리해서 질문한다.
- 주석 잘 활용하기. 주석을 잘 쓰는 방법에 대해서 좋은 글이 있으니 참고바란다. https://developside.tistory.com/14
# 과제 설명
# 요구 사항과 구현 내용
# 피드백 반영 사항 (재 PR시)
# PR 포인트 & 궁금한 정
참고자료
도움되는 좋은 글 감사합니다. ^^