Code Review

2 minute read

인이라는 것은 부정한 자를 곧게 만들 수 있는 것이다.


Code Review

우리가 코드리뷰를 하는 이유는 무엇인가? 현재 다양한 방법롤들이 나와 있는데, 실질적으로 코드리뷰를 통해서 우리가 원하는 것은 무엇인가?

본인도 오랜 기간은 아니지만 코드 리뷰는 전혀 신경쓰지 않은채 요구사항 접수받아 이를 수정하고, 운영 서버에 배포해오던 시기가 있었다. 그 시기의 개발 속도는 고객의 요구사항 반영에 있어서는 상당히 빠른 시간 내에 대응할 수 있었고, 이를 통해서 회사의 이익을 올릴 수 있었다는 것에 대해서는 이견이 없다. 사실 초기 스타트업이거나, 이제 사업을 싲가하여 개발시 수행되는 시점에 무조건적으로 코드리뷰가 필요한가에 대해서는 의문이 있다. 다만 개발자가 수정사항에 대해서 빌드하는 시점에 검증을 해줄 수 있는 단계들은 반드시 필요하다고 생각한다.

그래서 문득 든 생각은 비즈니스를 바탕으로한 솔루션이 어느정도 완성이 되고, 이를 안정화시켜 나가는 단계에서 코드 리뷰가 개발 프로세스로 정착하게 되는 것이 아닐까라는 생각을 했다. 하지만 만약에 처음부터 코드리뷰를 적용하여 얻을 수 있는 이점이 충분히 많다고 생각하지만 그것은 회사의 상황과 여력에 달려있다고 생각한다.

하지만 회사의 상황과 상관없이 팀 내의 개발 문화를 고민하고 스스로의 성장을 고민하고 계시는 분이라면 팀의 성장과 본인의 성장을 위해서라도 최소 단위의 코드리뷰를 수행해야 한다.
그렇다면 코드 리뷰를 했을 때, 얻을 수 있는 이점을 정리해봤다.

코드리뷰의 이점

  • 코드 리뷰를 위해서 공부를 하게 된다.
  • 코드 리뷰를 참여자들의 태도가 변한다.
  • 코드 리뷰를 진행하는 사람들의 커뮤니케이션 스킬이 증대된다.
  • 코드 리뷰시 발생되는 이슈를 추적 및 해결할 수 있다.
  • 코드 리뷰는 남탓을 안하게 만든다.

코드 리뷰에 대한 다양한 블로그와 책들을 보게되면 이외에도 다양한 이점들을 나열하지만 실무에서 코드리뷰를 수행했을 때 와닿았던건 위의 내용들이었다.

그럼 코드 리뷰가 어떤 것이길래 위의 이점들을 가지고 있다고 하는 것일까?

  • 위키백과

코드 검토(code review)는 코드를 개발자가 작성하고, 다른 개발자가 정해진 방법을 통해 검토하는 일을 말한다.

현재는 코드리뷰를 위해서 제공되는 다양한 방법론과 이를 받쳐줄 Tool이 존재합니다.

위에 언급한 Gerrit, Review Board, Phabricator의 툴을 활용하기 위해서는 소스를 관리하는 방식도 중요해진다.

대부분의 회사들이 소스를 관리하는 툴로 사용하는 것은

  • Git
  • SVN

하지만 SVN의 경우 코드리뷰툴과 연계가 어려운 부분이 많다. 그러다보니 SVN의 경우, 코드 리뷰 절차를 오프라인 회의 및 주기적인 확인 절차들을 적용해야 하기 때문에 코드 리뷰가 누락되거나 바쁜 일정 속에 제대로 지켜지지 않아 유야무야되는 경우가 상당히 많다.

사실 필자의 회사도 SVN을 쓰고 있었지만, SVN의 제한 사항들로 인하여 회사 내부에 Git Labs을 구성하여 소스 이관을 진행하고 있다.
효과적인 코드 리뷰의 강제성을 띄기 위해서는 Git을 도입하여 Review 툴을 연계하여 사용해야만 한다고 생각했다. 또한 Git을 활용하는 경우에는 별도의 Review 툴이 존재하지 않더라고 PR -> Review(Approval) -> Merge 절차를 이용해서 모든 코드에 대한 리뷰가 가능해진다.

앞으로 우리가 할 이야기는 Git을 활용하여 코드리뷰를 한다는 전제하에 어떤 방식의 코드리뷰를 할 수 있는지에 대해서 이야기해보고자 한다.

git을 활용한 코드 리뷰

git을 사용하고 있는 개발자라면 fork, pull request, merge, commit, push, fetch 등을 쉽게 수행할 수 있다.

상세한 git에 대한 사용법은 아래의 링크를 통해서 쉽게 이해할 수 있다. 다른 블로그에서도 명령어 등을 제공하지만, 역시 git 사이트에서 확인하는 것이 제일 확실하고 정확하다. 한글 버전도 제공하기 때문에 쉽게 확인 할 수 있다.

출처

Tags:

Categories:

Updated: