코드 리뷰는 소프트웨어 구축 모범 사례에 대한 시리즈의 또 다른 주제입니다. Codest는 훌륭한 코드 리뷰가 관련된 모든 사람에게 도움이 된다는 것을 조직 전체의 신념으로 삼고 있습니다. 이것이 중요한 이유는 무엇이며 코드 리뷰에 대한 우리의 접근 방식은 무엇일까요? 알아보세요!
작성자 업무에 대한 다른 관점을 얻을 수 있다는 이점이 있습니다. 코드. 이들은 종종 새로운 트릭을 배우거나 특정 문제를 해결하는 더 최적의 방법을 발견하기도 합니다. 또한 다른 사람들이 코드의 정확성을 확인하고 모든 것이 정상이라는 데 동의했음을 알기 때문에 자신 있게 변경 세트를 배포할 것입니다.
리뷰어 는 문제 해결에 대한 다양한 접근 방식을 실제로 볼 수 있다는 이점이 있습니다. 또한 코드 읽기 기술을 향상시킬 수 있으며, 이는 예를 들어 라이브러리에서 사용하기 위해 평가되는 프로젝트. 코드 리뷰는 작성자에게도 그렇지만 리뷰어에게도 새로운 요령을 배울 수 있는 학습의 기회입니다.
그리고 팀 특정 문제에 대한 해결책을 검토하려면 적어도 높은 수준의 추상화 수준에서 문제를 이해해야 하기 때문에 전체적으로 이점이 있습니다. 이는 팀에서 발생할 수 있는 우발적인 지식 사일로를 없애는 데 도움이 됩니다. 또한 '버스 팩터'가 증가합니다. 최소 2명(가급적이면 그 이상)이 특정 변경 사항을 알고 있기 때문에 팀원 중 아무도 모듈 업데이트 방법이나 특정 버그가 발생하는 이유를 모르는 상황이 발생할 확률이 줄어듭니다.
고객 는 빠르고 확실하게 배포된 변경 사항과 솔루션의 이점을 누릴 수 있습니다. 코드 리뷰는 다른 모범 사례(예: 우수한 테스트 커버리지, CI/CD, 스테이징 환경 등)와 함께 배포된 내용이 안전하고 정상적이며 지정된 요구 사항을 충족하는지 확인합니다.
이 가이드라인의 목적 및 사용법
무엇보다도 이러한 제안은 야심차고 효율적인 문제 해결에 도움이 되는 환경을 조성하는 동시에 안전망을 구축하고 모든 팀원들의 신뢰와 투명성을 증진하기 위한 것임을 기억해 주시기 바랍니다.
팀에서 이러한 가이드라인을 준수할 것을 강력히 권장하지만, 이 가이드라인은 엄격하고 빠른 규칙으로 의도된 것은 아닙니다. 또한 엄격한 프로세스는 속도를 떨어뜨리고 낭비를 조장하는 경향이 있으므로 이 프레임워크는 정확히 따라야 하는 '프로세스'로 의도된 것이 아닙니다.
팀 내에서 이 가이드라인을 기반으로 구축해도 좋습니다. 하지만 개발자가 팀을 옮겨 다니더라도 어떤 팀에 합류하든 이 문서를 기반으로 코드 검토를 진행해야 한다는 점을 기억하세요. 추가 규칙이 있으면 문서화하고, 이 문서에서 예외적으로 효과가 있었던 개선 사항을 다시 기여하세요.
코드 리뷰에 대한 책임
팀원 모두는 코드 검토와 관련하여 일정한 책임이 있습니다. 아래에는 코드 검토 시 해야 할 일과 하지 말아야 할 일이 프로세스의 역할별로 정리되어 있습니다.
프로젝트 리더
DO 리포지토리가 제대로 구성되어 있는지 확인합니다(예: 프로덕션 브랜치에 대한 병합은 최소 한 번의 승인 검토 없이는 허용되지 않습니다).
DO 팀이 이러한 관행을 이해하고 적용하도록 하고, 특정 방식으로 일을 처리하는 이유에 대한 이해를 높이기 위해 적극적으로 노력하세요.
DO 반대 의견을 해결할 수 없는 동점 상황에 주의하세요. 팀의 기술 리더로서 이러한 경우 더 적절한 해결책을 선택하고 작업을 계속 진행하는 것은 여러분의 책임입니다.
하지만, 하지 마세요 프로젝트 리더십을 무딘 도구로 사용하세요. 하지 마세요 "풀랭크". DO 다른 사람의 작업에 대한 격려만큼이나 여러분의 솔루션에 대한 검토와 비판도 환영합니다.
팀의 Slack 채널에 GitHub 연동을 추가하는 것을 고려하세요. 검토 요청을 검토자의 레이더에 더 잘 띄우면 도움이 될 수 있지만 채널의 전체 볼륨에 따라 이 방법이 팀에 적합할 수도 있고 적합하지 않을 수도 있습니다.
팀원
코드 리뷰에 참여하세요. 코드를 검토하지 않는 것은 허용되지 않습니다.
팀원들이 작업을 진행하기 위해 여러분에게 의존하고 있으니 코드 검토를 잊지 마세요!
특정 리뷰를 절대 할 수 없는 경우, DO 명확하고 공개적으로 소통하세요.
하지만, 하지 마세요 시스템/비즈니스 로직 사양의 해당 모듈/측면을 몰라서 특정 검토를 할 수 없다고 가정해 보세요. 코드 리뷰는 중요한 학습 기회입니다.
리뷰를 작성할 만큼 충분히 알지 못한다고 생각되는 경우, DO 작성자에게 문의하면 변경 사항에 대해 기꺼이 설명해 줄 것입니다.
하지 마세요 경험 수준에 따라 리뷰를 거부합니다(사용자의 경우 또는 저자의 것).
DO 최소한 자신이 생성한 PR 수만큼 검토하도록 노력하세요. 특히 규모가 큰 팀에서는 검토 비율을 1 이상으로 유지하는 것이 가장 이상적입니다.
작성자
DO 코드 검토는 여러분의 책임이라는 것을 이해하세요. 팀에서 적극적으로 검토할 풀 리퀘스트를 찾을 수도 있지만 반드시 그럴 필요는 없습니다.
하지 마세요 항상 같은 팀원에게 리뷰를 할당/요청하세요 - 다양한 리뷰어 풀을 통해 더 많은 이점을 얻을 수 있습니다 (반대로 더 많은 개발자가 코드를 검토할 수 있습니다).
하지 마세요 경력에 따라 검토 대상에서 제외할 수 있습니다. 주니어 개발자는 코드 검토를 통해 이점을 얻을 수 있습니다. 시니어 개발자는 코드 검토를 통해 이득을 얻습니다. 이 문서의 서문에서 언급했듯이, 모두 코드 검토의 이점을 누릴 수 있습니다.
고려 무작위 추출기를 사용하여 리뷰어를 선택합니다. 예: 루비에서, %w[팀메이트1 팀메이트2 팀메이트3].sample 는 놀라운 효과를 발휘할 수 있습니다.
DO 절대적으로 불가능한 경우가 아니라면 풀 리퀘스트에 최소 두 명의 검토자를 배정하세요. 이렇게 하면 더 많은 사람이 프로세스의 혜택을 누릴 수 있습니다(3명이면 동점자가 나오기가 더 어려워집니다).
DO 풀 리퀘스트에 신속하게 응답하세요. 모든 댓글에 즉시 응답하기 위해 흐름을 끊어서는 안 되지만, 응답이 적시에 이루어져야 합니다. 그렇지 않으면 PR이 코드 검토에 무기한 남아 있을 수 있습니다.
DO 열린 태도를 가져야 합니다. 항상 검토자가 최선의 의도로 도움을 주려고 한다고 가정하세요. 자신의 논리를 설명하고 검토자의 주장에 반박하며 질문에 답하세요.
DO 예의를 갖추세요. 오해는 일어날 수 있지만, 그것이 통제 불능 상태가 되어 팀 분위기를 해칠 필요는 없습니다.
DO 솔직해지세요. 이것이 최선의 해결책이라고 생각한다면 그렇게 말하고 그 근거를 제시하세요. 검토자의 제안이 내가 만든 것보다 더 낫다고 확신하게 되면 검토자에게 말하세요. 여러분과 검토자의 아이디어를 모두 사용하여 '두 가지 장점을 모두 갖춘' 솔루션이 만들어질 수 있다고 생각되면 검토자에게 제안하세요. 궁극적으로 풀 리퀘스트에서 합의를 도출하기 위해 노력하세요.
DO 지금 괜찮다고 확신해서 댓글을 삭제하지 말고 리뷰어에게 댓글 해결을 맡기세요.
DO 검토자에게 작업, 이유 및 기타 요구 사항을 적극적으로 설명하세요. 모르는 것은 괜찮지만 지식을 숨기는 것은 용납되지 않습니다.
하지 마세요 모든 것을 다 안다고 가정하세요 - 우리는 모두 훌륭한 전문가이지만, 함께 일할 때는 어느 정도의 겸손함을 가져야 합니다.
DO 코드의 첫 번째 검토자가 되세요. 리뷰어 모자를 쓰고 평소 마음에 들지 않는 사람을 대할 때처럼 코드를 주의 깊게 살펴보세요. 빈 줄, 남은 내용, 누락된 사양 등 가장 명백한 부분을 찾아서 제거하세요. 어차피 지적을 받을 가능성이 높으므로 어떤 것도 건너뛰지 마세요. 검토자의 시간을 낭비하지 마세요!
DO 풀 리퀘스트를 자세히 설명하세요. 검토자가 코드를 읽으면서 놀라지 않을 정도로 설명하는 것이 좋습니다. 리뷰어는 여러분의 마음을 읽을 수 없다는 것을 기억하세요. 그렇기 때문에 명확하지 않은 사항, 주요 결정 사항 또는 모든 새로운 클래스 및 파일을 이유와 함께 설명하는 것이 중요합니다.
고려 풀 리퀘스트 템플릿을 사용합니다. Github을 사용하는 경우 아래의 리포지토리에 추가하세요. .github/pull_request_template.md. 모든 팀원이 풀 리퀘스트를 설명하도록 권장합니다. 설명 필드를 템플릿으로 채우면 훨씬 더 쉽게 작성할 수 있습니다. 아래에서 저희 프로젝트 중 하나에서 사용하는 템플릿을 찾을 수 있습니다. https://gist.github.com/weemanjz/a20ccb9f3f492b9bd21ab026a1d46353
작성자
DO 귀하의 책임임을 이해합니다. 코드 검토 - 팀에서 검토할 풀 리퀘스트를 적극적으로 찾고 있을 수도 있지만 반드시 그럴 필요는 없습니다.
하지 마세요 항상 같은 사람에게 리뷰를 할당/요청합니다. 코드 검토자 - 다양한 리뷰어 풀을 통해 더 많은 이점을 얻을 수 있으며, 반대로 더 많은 개발자가 코드를 검토함으로써 더 많은 이점을 얻을 수 있습니다.
하지 마세요 경력에 따라 검토 대상에서 제외할 수 있습니다. 주니어 개발자는 다음과 같은 이점을 누릴 수 있습니다. 코드 리뷰. 시니어 개발자는 다음과 같은 이점을 누릴 수 있습니다. 코드 리뷰. 이 문서의 서문에서 언급했듯이, 모두 공연의 이점 코드 리뷰.
검토자
DO 요구 사항 대신 제안의 언어를 사용하세요. 다음과 같이 말하는 대신 "다음을 수행해야 합니다. 코드 품질 개선 대신 X를 수행함으로써"라고 말합니다. "개선을 고려해 보셨나요? 코드 품질 X를 해서?"
DO 제안 사항을 설명하세요. "여기서는 X가 더 낫다고 생각합니다. 지식 이전 그리고 코드 품질 개선."
제안이 객관적인 출처에서 나온 것이라도(예 코드 스타일 가이드라인), DO 작성자에게 무언가를 하라고 지시하는 대신 무언가를 해달라고 요청합니다. "모든 위젯은 당사의 코드 스타일 가이드 - [링크]"
하지 마세요 모든 것을 알고 있다고 가정합니다. "이 위젯은 절대로 프로비저닝해서는 안 되며, 이러한 조건에서는 프로비저닝이 발생한다는 것이 제 이해입니다. 코드 검토?"
DO 포용적인 언어를 사용하세요. "이렇게 구축하면 미래가 더 나아질 것이라고 생각합니다. 이에 대해 어떻게 생각하시나요? 더 나은 코드 검토 제안?" 그리고 "여기서는 X 대신에 효과적인 코드 검토?"
DO 신속하게 수행하십시오. 코드 리뷰. 이 동작을 하기 위해 업무 흐름을 끊어서는 안 되지만, 가능하면 루프를 타이트하게 유지하세요. 어떤 사람들은 하루 일과를 시작하거나 끝낼 때 '워밍업' 또는 '쿨다운'으로 이 동작을 하는 것을 좋아합니다.
이러한 키워드는 텍스트의 문맥과 일관성을 유지하기 위해 삽입되었음을 참고하세요. 특정 위치에 삽입되기를 원하시는 경우 친절하게 명시해 주세요.