본문 바로가기

1.관리 및 아키텍처

코드 리뷰 Code Review 가이드

들어가기

이글은 가이드일 뿐이며, 자신의 환경에 맞게 적절하는 수정하면 됩니다. 코드 리뷰하기 전에 아래 내용에 대해 먼저 깊게 생각해보고 진행하시기 바랍니다.

작성자: ospace114@empal.com, http://ospace.tistory.com/

이 문서는 팀단위로 코드 리뷰를 진행하기 위한 가이드입니다.

목적

리뷰의 목적은 결함을 사전에 발견하고 코드 품질 향상을 하고 서로에게 긍정적 영향을 미치면서 개개인의 스킬을 향상에 있습니다.
처음부터 완벽한 코드를 추구하는게 아닌 지속적으로 개선하는 목표를 가져야 합니다.

키워드

  • CL(Change list): 코드 리뷰하는 대상들(예. 소스코드, 문서 등)
  • 작성자(Author): CL 리뷰를 준비하는 작성자
  • 리뷰어(Reviewer): 리뷰코드를 검토하는 자

사전 준비

  • 작성자는 자신이 개발한 모듈 혹은 기능 중에서 기본 코딩 스타일 적용과 테스트를 완료한 상태로 CL을 준비합니다. 이 단계에서 어느정도 문제점을 해결해야 합니다. 필요하면 다른 개발자에게 간단하게 사전 리뷰를 요청할 수도 있습니다.
  • 리뷰할 CL 코드는 기본 200라인으로 최대 300라인을 넘지 않게 1시간 정도 리뷰를 진행하도록 준비합니다. 모든 코드를 리뷰하는게 좋지만 대부분의 코드는 단순한 경우가 많아서 핵심 기능이나 복잡한 로직에 대해서 준비합니다.

리뷰 진행에 3가지 원칙은 필수로 지키야 한다.

  1. 리뷰는 서로에 친절하고 상호 합의된 상태에서 진행되어야 합니다.
  2. 리뷰할 때에 비난하듯이 묻지말고 객관성을 가지고 이유와 해결 방안을 같이 제시하도록 합니다.
  3. 코드 품질을 떨어뜨리는 코드 리뷰 승인은 어떤 경우도 정당화될 수 없습니다.(긴급 상황인 경우 허용) → 서로 간에 합의가 필요하기에 강제적으로 강요는 문제가 있습니다.

코드 리뷰 순서

  1. 코드규칙 가이드 라인 검토
    • 기본 코딩 스타일을 준수하는지 확인하고 없다면 기존 코드 스타일을 유지
    • 주석은 가독성이 충분하면 추가 서술이 필요 없음
    • 변수명은 명확하다고 판단되는 기준으로 합의
  2. 기획서에 있는 기본 기능 검토
    • 요구사항이 제대로 반영되었는지 확인
    • 과도한 기능 구현이 없는지 확인
    • 예외적인 상황을 처리하고 있는지 확인
  3. 전체적인 아키텍처 검토
    • 현재 소스트웨어 아키텍처에 적합한지 확인
    • 라이이브러리, 클래스, 함수, 변수가 적절하는 선택되고 설계되었는지 확인
    • 코드 구조나 리소스 사용에 대한 확인
    • 에러 및 예외가 적절하게 처리되는 확인
    • 테스트에 적합하게 작성되었는지 확인
  4. 마무리
    • 리뷰한 내용을 정리하고 빠른 시간 내에 코드에 반영
    • 후속 코드리뷰에 대한 계획
    • 코드리뷰 후에도 변화가 없는 경우 코드를 격리해서 관리하는 방안을 선택(감정싸움이 더 위험)

코드 리뷰 주지 사항

  • CL는 너무 커지면 비효율적이므로 최대한 작게 유지하자
  • 개인적 견해나 선호도보다 기술적인 사실을 우선시 한다
  • 설계에 대한 사안은 스타일이나 개인 선호를 기준으로 결정하지 않는다
  • 리뷰는 짧고 빠르게 여러 번 진행하도록 하자
  • 리뷰하다가 좋은 점을 발견하면 칭찬해주자
  • 작성자가 반대 의견이 있을 경우 잠시 시간을 갖고 고민하자

결론

코드 리뷰는 의외로 까다롭습니다. 주로 코드 리뷰는 지적하는 자리가 되기 쉽습니다. 또는 시간이 부족하다는 이유로 준비가 부족해지면 더욱 안좋은 상황으로 가기 쉽습니다. 바쁜 일정에 코드 리뷰는 배부른 소리가 될 수도 있고, 한다고 해도 경험이나 문화가 리뷰하기에 적절하지 않다면 코드 리뷰가 정책되기까지 시간이 오래 걸릴 수 있습니다. 어쩌면 코드 리뷰보다 QA로 진행하는게 더 좋을 수도 있습니다.

저도 한번 진행해보았는데, 상급자에 의해서 분위기가 딱딱해지고 작성자의 준비 소홀로 인해서 시간 낭비가 심해지면서 중간에 멈추게 되었습니다. 개인마다 품질의 수준과 지향점이 달라서 시간이 더 많이 소모된듯 합니다. 이부분은 시간이 해결하겠지만 일정이 여유가 없고 코드리뷰에 대한 시간을 별도로 할당되지 않는 상황이라서 더 이상 진행이 불가했습니다. 어느 정도 안착된다면 정말 강력한 도구로 동작하겠지만 그렇지 않으면 늪과 같은 존재가 될 수도 있습니다. 부족한 글이지만 여러분에게 도움이 되었으면 하네요. ospace.

코드 품질은 천천히 조금씩 증가한다!

반응형