Project

좋은 Pull Request를 만드는 방법과 PR Template 구성

이진2 2021. 11. 5. 19:55

https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository

 

Creating a pull request template for your repository - GitHub Docs

For more information, see "About issue and pull request templates." You can create a PULL_REQUEST_TEMPLATE/ subdirectory in any of the supported folders to contain multiple pull request templates, and use the template query parameter to specify the templat

docs.github.com

시간이 없다면 👆 이 글을 참고해서 바로 만드시면 됩니다 ❗❗

 

이번 프로젝트에서는 코드 리뷰를 적극적으로 도입하면서 좋은 Pull Request와 좋은 리뷰에 대해 고민하고 있다. 이번 글에서는 PR의 중요성과 어떤 내용이 들어가야 좋을지 정리해보고, 코드 리뷰에 대해서도 앞으로 천천히 정리해보려고 한다

 

좋은 Pull Request가 중요한 이유

Reviewer resource is very limited, treat it wisely!
(리뷰어는 매우 제한되어 있으니 그들을 현명하게 다룹시다!)
- LINE Engineering Blog

PR의 단위와 내용이 중요한 이유는 Pull Request를 통해 코드 리뷰를 받기 위해서다. 코드 리뷰를 통해 팀원 간의 코드 스타일을 맞출 수 있고, 직접 코딩할 때 발견하지 못 했던 위험도 발견할 수 있다. 그래서 코드 리뷰를 하는 리뷰어도 우리와 같은 개발자라는 사실을 잊어서는 안된다.

PR의 내용만 보고서도 변경 사항에 대해 충분히 이해할 수 있고, 원하는 부분이나 토의해야 할 대해 명시하는 PR이 좋은 PR이라고 생각한다❗❗

 

Pull Request의 크기는 얼마가 적합할까?

작은 PR의 장점 - 뱅크샐러드 기술블로그
PR 크기에 따른 해결 시간 그래프 - 라인 기술블로그

그래서 많은 IT 회사들에서는 PR의 크기를 작게 유지하기 위해 노력한다 !! 사진에서도 나와있는 것 처럼, 하나의 PR에 소모되는 시간이 줄어들고, 빠른 피드백과 빠른 수정이 가능하다.

개발을 하고 있다가 팀원의 코드 리뷰가 도착했을 때 PR이 너무 크다면, 피드백 해야 할 내용이 너무 많다면? 리뷰어의 에너지라는 리소스가 소모된다. 또한 피드백을 통해 고칠 내용이 많아지고, 또 그 내용을 다시 리뷰해야 한다면 코드의 작업 속도도 느려진다.

그래서 Cisco는 300줄 ~ 400줄을 권장하고, 뱅크샐러드에서는 최대 1000줄의 줄 수 변경이라는 제한을 두고 있다. 큰 PR이 왜 좋지 않은지는 아래의 링크를 참고할 수 있다 

https://smallbusinessprogramming.com/optimal-pull-request-size/

 

Optimal pull request size - Small Business Programming

Every team has an optimal pull request size, it's likely much smaller than you think, and it matters to the performance of your team.

smallbusinessprogramming.com

 

PR에는 어떤 내용이 들어가면 좋을까?

리뷰어가 코드의 문맥을 빠르게 파악할 수 있도록 PR의 내용에서 충분한 정보를 전달해야 한다.

그 내용으로는

  • 무슨 이유로 코드를 변경했는지
  • 어떤 위험이나 장애가 발견되었는지
  • 어떤 부분에 리뷰어가 집중하면 좋을지
  • 관련 스크린샷
  • 테스트 계획 또는 완료 사항

이 포함되면 좋다 !!

 

왼: 뱅크샐러드 / 오: 라인

현업에서는 이런 내용을 담아서 PR을 작성한다고 한다

 

Pull Request Template이란? 만드는 방법

PR 템플릿을 만들어보자

나는 PR에 포함될 내용들을 정의하고, 생성할 때 마다 자동으로 틀을 만들어주기 위해 PR 템플릿을 작성했다.

Pull Request Template은 Github/Gitlab과 같은 관리 툴을 사용한다면 풀 리퀘스트를 생성할 때 자동으로 내용을 채워준다. 나는 코드를 추가/변경하게 된 이유, 주요 구현 사항, 리뷰어에게 전달할 말 세 가지로 PR 템플릿을 구성했다.

템플릿을 작성하는 법은 의외로 간단한데

1️⃣ Github 버튼의 Add file - Create new file을 클릭해서

2️⃣ pull_request_template.md 라는 파일을 생성해준다. 위치는 사용자가 원하는 데 지정하는 것이 좋다. 숨겨진 디렉토리에 저장하기 위해 .github 하위에 저장하는 방법이 일반적이다.

그러면 아래 사진처럼 PR을 생성할 때 PR 템플릿의 내용이 기본으로 채워진다 

만들었다!
실제 예시

아직 코드리뷰를 시작한지 얼마 안된 코린이라서 부족한 부분이 있겠지만 앞으로도 열심히 좋은 코드를 만들고 리뷰해가면서 발전시킬 예정이다 👏👏