많은 의역이 들어갔으므로, 원문 Effective Code Reviews를 읽어보시는 것을 추천합니다.
잘 진행된 코드 리뷰는 코드 작성자와 리뷰하는 사람(이하 리뷰어) 모두가 지식을 배우고, 공유하며 소프트웨어의 퀄리티 향상에 기여할 수 있는 좋은 기회가 된다. 이는 더 좋은 방향으로 가는 여정과도 같은데, 다음의 가이드라인이 이 과정을 보다 효율적이고 건설적일 수 있도록 도와줄 것이다.
효율적을 코드 리뷰를 위한 가장 중요한 부분 중 하나는 바로 당신의 코드를 리뷰해주는 사람들의 시간이 얼마나 소중한 지 기억하는 것이다. 몇 가지 팁은 다음과 같다.
코드 리뷰를 해달라고 말하기 전에, 스스로 한 번 코드를 살펴 보자. 오타는 없는지, 논리적인 오류는 없는지, 스스로 개선할 수 있는 부분은 없는지 말이다. 이렇게 사전에 스스로 진행하는 코드 리뷰를 통해서 사소한 문제를 찾아내고 고칠 수 있을 것이다.
큰 덩어리보다는 다루기 좋은 작은 덩어리의 코드들을 리뷰하는 것이 훨씬 쉽고 효율적이다. 변경 내용을 보다 작게, 논리적 단위로 작게 쪼개면 리뷰 과정이 더 효율적이면서도 부담은 적어질 것이다.
스타일이나 포맷을 맞추는 것은 도구를 사용해서 자동화하ㅏㅈ. 이렇게 하면 리뷰어의 시간을 아낄 수 있을 뿐만 아니라 당신의 코드가 팀의 기준이나 컨벤션에 맞는 지 하나하나 확인할 필요가 없다. 보통 이 작업은 팀 또는 프로젝트 수준에서 미리 정리 된다.
코드의 변경 사항은 확실하고 가능한한 좁은 범위에 국한 되어야 한다. 관련 없는 범위를 모두 포함시키면 리뷰어는 헷갈리게 되고, 오류가 발생할 가능성이 높아진다.
건설적인 비판은 긍정적으로 받아 들이고, 새로운 걸 배울 수 있는 기회로 삼자. 모든 사람은 실수를 하고, 코드 리뷰는 그런 실수에서 배울 수 있는 기회이다.
리뷰 코멘트를 받으면 빠르게 대응하자. 그래야 다음 단계로 넘어갈 수 있고, 각 리뷰에 대해 필요 없는 시간 소모를 줄일 수 있다.
만약 리뷰의 어떤 부분이 모호하다면, 명확하게 말해 줄 수 있느냐고 요청하자. 건설적인 대화는 코드 작성자와 리뷰어 모두에게 도움이 된다.
당신의 변경 사항에 대해서는 항상 명확하게 소통해야 한다. 만약 리뷰어가 남긴 제안 사항 하나 하나에 따라서 코드를 바꾸었더라도, 그걸 모두 언급하는 것이 맞다.
좋은 문서는 코드 그 자체만큼이나 중요하다. 잘 정리된 문서는 컨텍스트를 제공하고, 그 코드가 왜 쓰여졌고 어떻게 동작하는지를 설명해주기 때문에 다른 사람들이 당신의 코드를 더 잘 이해할 수 있도록 도와준다. 테스트 같은 경우에도 마찬가지이다.
해당 코드가 필요한 코드인지, 그리고 기존 코드와 잘 맞는지 확인하자. 각각의 조각들이 다른 코드와 조화로운지, 그리고 전체적인 시스템이 동작하는데에 긍정적으로 기여하는지를 보자.
코드는 이해하기 쉽고, 목적이 명확해야 한다. 이러한 명확성은 지금 개발하고 있는 사람 뿐만 아니라 미래에 유지보수를 할 사람에게도 도움이 된다.
코멘트를 달 때에는 그 코드가 어떤 동작을 하는지 보다는 왜 있어야 하는지에 대해서 설명하자. 이렇게 원리를 목적으로 두면 코드 뒤의 논리적 근거 자체를 이해하는데 도움이 된다.
복잡한 코드는 유지보수하기도 어려운데다 버그도 잘 생긴다. 코드는 기능을 해치지 않으면서 가능한 한 최대한 간단해야 한다.
코드는 팀의 스타일 가이드를 따라야 한다. 주요 스타일의 변경은 기본 변경 목록과 구분해서 정리해둬야 한다.
코드는 적절한 테스트와 문서화가 필수이다. 이런 연습은 코드의 통합성을 유지하고 다른 사람들이 코드를 더 잘 이해할 수 이게 한다.
코멘트는 개발자가 아닌 코드 자체에 맞춰져야 한다. 프로그래밍 스킬 개발은 코드 리뷰의 부분이 아니다. 거들먹거리거나 막연한 말은 하지 말자. 대신에, 확실하고 구체적이면서 긍정적인 피드백을 담자. 괜히 지나친 트집은 잡지 말고, 사소한 문제(스타일 검사)는 도구를 사용해서 처리하자.
코드를 리뷰할 때 고려해야 하는 몇 가지 기준이 있다. 코드가 요구 사항을 잘 충족하는가, 논리적으로 맞고 보안이 확실한가, 성능 기준을 맞추며 관찰 가능한가, 불필요하게 복잡하지는 않은가, API와 내부가 완전히 분리 되었는가, 그 외 변경사항은 없는가 하는 것들 말이다.
결론적으로, 코드 리뷰는 서로 존중하면서도 건설적이면서 집중해서 이루어져야 한다. 코드 작성자, 리뷰어 모두 코드의 품질을 유지하고 장기적으로 유지보수하기 쉽게 만드는데에 중요한 역할을 한다. 열린 마음을 유지하고, 항상 개선하기 위해 노력하자!
글 잘 봤습니다.