본문 바로가기
공부/[개발 관련]

[PR: Pull Request에 대하여] PR의 목적과, 좋은 PR이란 어떤 것일까?

by 인생은아름다워 2022. 1. 4.
PR에 대하여 : PR의 목적은 무엇이며, 좋은 PR이란 어떤 것일까?

PR(Pull Request)이란?

  • Github에서 제공하는 기능으로서, 기존 Github저장소에 보관된 코드 베이스에서 나의 작업으로 생긴 변경사항들(수정, 추가, 삭제)을 코드베이스에 포함시켜달라고(merge 시켜달라고) 보내는 요청이다.
  • 초보자의 입장에서만 생각해보면, 내 작업을 기본형상에 반영해줘! 정도로 생각하면 될 것같다.

PR을 하는 목적은?

  • 위와 같은 질문을 듣고 내가 생각한 답변은 "코드 합병을 위함이며, 합병 전에 변경한 코드 리뷰의 목적도 있을것 같다" 였다. (합병=merge)
  • 대부분의 사람들은 "코드 합병을 위해", "코드 작성자에게 나의 코드를 반영해도 되냐고 묻기 위해", "충돌을 피하기 위해" 등의 답을 할 것이다.
  • 좀 더 구체적으로 PR의 목적을 알기 위해 검색과 지인 개발자에게 물어물어... 나름대로의 생각정리를 해 보았다.
  • 한 마디로 표현하자면 "PR이란 코드의 품질을 유지하기 위해 하는 것!"

기존에 내가 생각했던, 그리고 보통의 사람들이 생각하는 PR에 대한 목적(또는 정의)는 PR을 발행하는 사람의 입장에서 생각한 것 이었다.

이보다 더 나아가 PR이란, 작성자 기준이 아닌 코드를 기준으로, 'PR'을 통해 커뮤니케이션 하며 그 코드를 더 나은 방향으로 가게끔 하는 것 이라는 생각이 든다.

이러한 이유로 협업하는 개발자 끼리 PR의 탬플릿을 만들어두고 사용하거나, 코드 퀄리티를 척정하여 어떠한 형식의 리포트를 발행하기도 하다. 또는 테스트코드를 통해 작성한 코드와 합쳐질 코드에 깨지는 부분이 발생하지는 않는지 확인하기도 한다.

이를 통해 1차적으로(기계적으로) 확인 후, 2차적으로 코드 리뷰를 통해서 기계적으로는 확인할 수 없는 부분(설계, 유지/보수의 관점, 가독성 등)을 피드백한다. 물론 리뷰어가 더 나은 방법을 제안하기도하고, 반대로 리뷰어가 배우는 경우도 있을 것이다!

PR을 통해 코드를 두고 리뷰이와 리뷰어가 커뮤니케이션 한다고 할까...

그럼, 좋은 PR은 어떤 것인가?

  • 현재의 나는 커뮤니케이션 하기 좋은 PR이 좋은 PR 이라고 생각한다.

커뮤니케이션 하기 좋다는 것은 무엇일까? - 리뷰를 요청하는 입장에서 리뷰어를 배려한다는 것이다.

그럼 어떻게 리뷰어를 배려해야할까? (어떻게 읽기 편하게 작성할까?)

1. 적절히 쪼개서 PR하기
-한 번에 너무 많이 리뷰를 요청하지 않도록 작업 단위를 잘 나누기

2. 내가 작성하거나 변경한 코드는 내가 확실히 이해하기

3. 코드 컨벤션을 잘 따르기

4. 작업중 / 리뷰요청 등의 태그를 잘 달아주어, 아직 완성되지 않은 코드를 리뷰하여 시간을 낭비하지 않도록 하기
-[WiP] / [review-needed] 등 (WiP : Work in Process)
-Just line change 등 코멘트를 달아서 리뷰어에게 알려주는 것도 방법

5. 이 기능을 왜 구현하는지?(어떤 니즈에서 출발했는가)

6. 구현 방법을 고민했다면 왜 이 방법을 택했는지?(어떤 트레이드오프를 고려하여 결정했는지?)

7. 테스트를 꼭 진행해보기 (진행하지 못 했다면, 적어도 어떻게 테스트해 볼 수 있는지? 작성하기)

8. 코드 보는것으로 이해하기 어려울 것 같다면, 코멘트를 통해 부가설명을 추가하기

결론

오늘은 PR(Pull Request) 에 대하여 생각정리를 해 보았다.
뭔가 공부를 시작하고 깃, 깃헙 등 아직 익숙치 않아서 그런지 손이 닿는대로 사용하고 있었는데, 그러다보니 무언가를 잘 정의하지 않고 사용하는 경우가 많이 있는 것 같다.

오늘 이렇게 막연했던(막연했다기 보다는, 아예 생각없이 사용했던) PR 에 대해 생각해보니... 뭔가 더 깔끔해진 느낌이다.

제 생각(제가본 글, 제 지인의 도움)이 완벽하지는 않겠지만, 이 글을 읽는 여러분도 공감하신다면 함께 좋은 PR을 작성하는 리뷰이가 되도록 노력해봐요!

그리고 당연히 이 글과 제 생각에 대하여 피드백을 주신다면 언제나 환영합니다!

감사합니다

참고했던 글

글 1: 좋은 PR에 대한 단상
글 2: 코드리뷰의 진짜 목적은 따로있다
글 3: 코드 리뷰 in 뱅크샐러드 개발 문화

댓글