정리 - 코드리뷰 가이드

 

원문 사이트

https://github.com/thoughtbot/guides/tree/main/code-review


공통사항

  • 많은 프로그래밍 결정이 의견임을 인정하세요. 선호하는 장단점을 논의하고 신속하게 해결책을 도출하세요.
  • 좋은 질문을 하되 요구하지 마세요. ("이 이름을 :user_id로 짓는 것은 어떨까요?")
  • 좋은 질문은 판단을 피하고 작성자의 관점에 대한 가정을 피합니다.
  • 설명을 요청하세요. ("이해가 안 되는데 설명해 주시겠어요?")
  • 코드의 선택적 소유권을 피하세요. ("내 것", "내 것이 아니다", "당신 것")
  • 개인적 특성을 지칭하는 것으로 보일 수 있는 용어는 사용하지 마세요. ("dumb", "stupid"). 모든 사람이 지적이고 선의가 있다고 가정합니다.
  • 명확하게 표현하세요. 온라인에서 사람들이 항상 내 의도를 이해하는 것은 아니라는 점을 기억하세요.
  • 겸손하게 행동하세요. ("잘 모르겠습니다 - 찾아보겠습니다.")
  • 과장된 표현을 사용하지 마세요. ("항상", "절대", "끝없이", "아무것도")
  • 비꼬는 표현을 사용하지 마세요.
  • 진실을 유지하세요. 이모티콘, 움직이는 GIF 또는 유머가 본인에게 맞지 않는다면 억지로 사용하지 마세요. 이모티콘을 사용해야 한다면, 유머러스하게 사용하세요.
  • "이해하지 못했습니다" 또는 "다른 해결책:"이라는 댓글이 너무 많으면 채팅, 화면 공유, 직접 대면 등의 방식으로 동시에 대화하세요. 토론 내용을 요약하는 후속 댓글을 게시합니다.
  • 새로운 것을 배웠다면 감사의 마음을 전하세요. ("몰랐던 사실인데 공유해 주셔서 감사합니다.")


코드 리뷰 요청자

  • 검토자의 제안에 감사하는 마음을 표현하세요. ("좋은 지적입니다. 변경해 보겠습니다.")
  • 온라인에서 감정과 의도를 전달하기는 어려울 수 있다는 점에 유의하세요(https://thoughtbot.com/blog/empathy-online).
  • 코드가 존재하는 이유를 설명합니다. ("이런 이유 때문에 그런 것입니다. 이 클래스/파일/메서드/변수의 이름을 바꾸면 더 명확해질까요?")
  • 일부 변경 사항과 리팩터링을 추출하여 향후 티켓/스토리에 추가합니다.
  • 티켓/스토리에서 코드 리뷰로 연결합니다. ("검토 준비 완료: https://github.com/organization/project/pull/1")
  • 이전 피드백을 기반으로 한 커밋을 브랜치에 격리된 커밋으로 푸시합니다. 브랜치를 병합할 준비가 될 때까지 스쿼시하지 마세요. 리뷰어는 이전 피드백을 기반으로 개별 업데이트를 읽을 수 있어야 합니다.
  • 리뷰어의 관점을 이해하려고 노력하세요.
  • 모든 댓글에 응답하려고 노력하세요.
  • 지속적 통합(TDDium, Travis CI, CircleCI 등)에서 브랜치에서 테스트 스위트가 초록색으로 표시될 때까지 브랜치 병합을 기다린다.
  • 코드와 코드가 프로젝트에 미치는 영향에 대해 확신이 들면 병합하세요.
  • 최종 편집 권한은 풀리퀘스트 작성자에게 있습니다.


코드 리뷰어

변경이 필요한 이유를 이해합니다(버그 수정, 사용자 경험 개선, 기존 코드 리팩터링). 그런 다음

  • 어떤 아이디어가 마음에 드는지, 어떤 아이디어가 마음에 들지 않는지 소통하세요.
  • 문제를 해결하면서 코드를 간소화할 수 있는 방법을 찾아보세요.
  • 토론이 너무 철학적이거나 학문적으로 변하면 금요일 오후의 정기적인 기술 토론으로 오프라인 토론을 전환하세요. 그 동안에는 작성자가 대체 구현에 대한 최종 결정을 내리도록 하세요.
  • 대체 구현 방법을 제시하되, 작성자가 이미 고려하고 있다고 가정합니다. ("여기에 사용자 지정 유효성 검사기를 사용하는 것에 대해 어떻게 생각하세요?")
  • 작성자의 관점을 이해하려고 노력하세요.
  • 풀 리퀘스트에 👍 또는 "병합 준비 완료" 댓글로 서명하세요.
  • 게이트키퍼가 아니라 피드백을 제공하기 위해 여기에 있다는 것을 기억하세요.
  • '제안 추가' 기능을 사용하여 변경 사항을 제안할 때:
    • 어떤 줄을 추가/제거할 것을 제안하는지 명확하게 전달하세요.
    • 가능한 경우 제안한 변경 사항을 테스트하여 제대로 작동하는지 확인합니다.
    • 테스트할 수 없는 경우에는 풀 리퀘스트 작성자에게 제안을 테스트하지 않았다는 사실을 알립니다.
    • 작성자에게 변경을 제안하는 이유를 알릴 수 있는 컨텍스트를 제공하세요.


스타일 코멘트

검토자는 누락된 스타일 가이드라인에 대해 코멘트를 달아야 합니다. 코멘트 예시:

→ 유용한 경로를 이름별로 알파벳순으로 정렬하세요.

스타일 댓글에 대한 응답 예시:

→ 이런. 잘 발견했습니다, 감사합니다. a4994ec에서 수정되었습니다.

가이드라인에 동의하지 않는 경우 코드 리뷰 내에서 토론하지 말고 가이드 리포지토리에 이슈를 개설하세요. 그 동안 가이드라인을 적용하세요. 표준과 같은 lint를 설정하여 코드 형식을 자동으로 지정하는 것이 도움이 되는 경우가 많습니다. 이렇게 하면 개인적인 스타일 선호도에 대한 논쟁보다는 PR에 대해 더 의미 있는 대화를 나눌 수 있습니다.

도움이 되는 다른 글

구글 코드 리뷰 가이드 :

https://google.github.io/eng-practices/

https://soojin.ro/review/

댓글 없음:

댓글 쓰기

도서 내용 정리 - 스태프 엔지니어

개요 네이버 도서 정보:  https://bit.ly/3JzLvQr 개발자는 관리자로만 커리어를 쌓아야 하는가? 관리자가 아닌 기술 리더로 성장하는 길은 없을까? IT 업계가 계속 성장하면서 전에 없던 팀과 조직의 경계를 넘어서는 큰 문제를 다루게 되...