본문 바로가기

코드리뷰

코드리뷰 알아보기

코드리뷰

1. 프로그램의 소스 코드를 검토해 프로그래밍 중에 지나친 오류를 찾아내 제품이나 서비스의 품질을 높이는 행위
2. 한 개발자가 코드를 작성하면 다른 개발자가 정해진 규칙으로 피드백을 주고받는 방법
3. 코드에 대한 책임이 그 코드를 만든 사람에게 있지 않고, 우리 모두에게 있다는 문화 생성

 

 

코드리뷰의 장점

- 코드 작성자가 발견하지 못한 실수를 다른 사람이 발견하여 코드의 부작용과 오류에 대해 조기 대응 가능
 - 개발 내 정해진 컨벤션 규칙 유지
 - 여러 명이 문제 해결을 위한 기술 구현에 대해 공유
 - 중복 코드 빨리 발견 
 - 코드 재사용성 증가

 

코드 리뷰는 단순히 버그를 사전에 발견하거나 문제점을 찾는 목적을 넘어 전체적인 조직의 역량을 강화함

 

 

 

 

코드리뷰의 5가지 규칙

  ※ 리뷰어 : 다른 사람의 코드를 리뷰하는 사람

      리뷰이 : 본인의 코드를 리뷰 받는 사람

1. 개선이 필요한 이유 충분히 설명

리뷰를 남길때에는 개선이 필요한 이유를 충분히 설명해야 함

리뷰가 너무 주관적이거나 추상적이면 코드 작성자는 혼란을 느낄 수 있음

ex)

안 좋은 리뷰

"data 변수 말고 다른 변수명으로 하세요"
"data 변수 말고 grade로 하세요"

좋은 리뷰

"data라는 이름은 현재의 자료구조가 무엇인지 그 의도를 알기가 어렵네요.
학점 정보를 담고 있는 자료구조 같은데 이와 관련된 변수명을 짓는다면 
현재 정의한 자료구조가 무엇인지 그 의도를 쉽게 파악할 수 있을 것 같아요"

 

 

2.  답 알려주기 X  스스로 고민하고 개선 방법 선택하도록 O

현재 코드의 개선점을 찾아 답을 알려주는 경우가 늘어나기도 하는데 이러한 리뷰는 코드 작성자가 코드만 변경할 뿐

스스로 고민하는 시간을 줄어들게 됨. 답을 알려주는 리뷰가 많아질 수록 코드에 대한 애정도 사라지고 수동적인 개발자가 될 수 있으므로 스스로 고민하고 개선 방법을 찾는 것이 중요

답을 알려주기 보다는 키워드를 알려줌으로써 코드 작성자는 동작 방식을 찾아보고 스스로 학습할 기회가 생기며 비슷한 코드를 리팩토링 할 기회가 생김

ex)

안 좋은 리뷰

"arr.filter(item => item % 2 == 0); 으로 사용하세요"

좋은 리뷰

"자바스크립트 배열에는 다양한 내장 메서드들이 존재합니다. 
그 중 filter 메서드를 활용해 보세요
이 메서드를 활용하면 코드량을 줄일 수 있습니다"

 

 

3. 코드를 클린하게 유지하고, 일관되게 구현하도록 안내

함수를 반복적으로 선언하는 곳은 프로젝트에서 정한 컨벤션 규칙을 지키면서 코드를 작성하도록 하는 것이 좋음

ex)

안 좋은 리뷰

"함수 표현식을 사용하셨군요. reduce의 사용도 잘 활용했네요."

좋은 리뷰

"함수를 선언하는 두 가지 방식(함수 표현식, 함수 선언식)을 사용했는데 특별한 이유가 아니라면 함수를 선언하는 방식을 스스로 정하고 그 컨벤션 규칙을 따르도록 해보세요. 일관되게 동작하는 코드는 훨씬 보기 좋고 쉽게 수정할 수 있습니다. 그리고 reduce를 통해서 새로운 자료구조를 만든 건 잘했습니다. 하지만 같은 반복처리를 하는 과정에서 calculateEarningRate 에서 for문을 사용한 건 아쉽네요. reduce와 비슷한 방식의 다른 고차 함수를 찾아서 써보면 더 일관된 코드를 유지할 수 있을 거 같습니다."

 

 

4. 리뷰 과정을 학습 과정으로 느낄 수 있도록 리뷰

코드 작성자가 코드리뷰를 학습 일부로 받아들이기 위해 피드백을 자주 주고받고, 성장하고 있다는 생각을 심어주는 것이 좋음

코드 작성자의 의도를 먼저 파악 후 피드백 하는 과정을 통해 어떤 부분을 수정해야 하는지 고민하고 학습할 수 있는 계기를 만들어 줄 수 있음

ex)

안 좋은 리뷰

“클래스 상속은 필요 없습니다.”

좋은 리뷰

"Component 클래스를 상속 받는 건 좋네요. 그러나 자식 클래스에서 부모 클래스를 호출만 하기 때문에 모든 클래스에서 상속받는 건 오히려 중복 코드 같아 보이기도 하는데 이렇게 작성해 주신 이유가 있을까요?"

 

 

5. 리뷰를 위한 리뷰 X, 피드백 할게 없다면 칭찬을 O

흔적을 남기기 위한 리뷰는 서로를 어색하게 만들기도 함

따라서, 리뷰 시 칭찬 피드백을 한다면 서로 시너지 효과를 증대시킬 수 있음

ex)

  • 코드량이 적당해서 읽기 편하네요.
  • 많은 고민이 코드에서 엿보이네요.
  • 성능에 아주 유리한 코드라고 생각되네요.
  • 전에 코드보다 훨씬 좋아진 거 같네요.
  • 예외 처리가 꽤 꼼꼼해서 좋네요.
  • 함수, 변수명이 직관적이어서 좋네요.

 

 

글로벌 기업의 코드리뷰

Google

      100% 코드 리뷰, 모든 코드를 리뷰

Step1. 코드변화리스트(CL) 작성
Step2. 동료에게 코드변화리스트 전송
Step3. 동료는 작성자의 코드리스트 확인 후 코멘트 또는 LGTM 전송
Step4. 모든 리뷰어들에게 LGTM을 받으면, 레파지토리에  커밋

 ※ LGTM

 - 코드 소유자와 리뷰간 의견 교환을 통해 작성된 코드에 대해 리뷰어가 더 이상 피드백 할 것이 없다고 판단되면,

   ''본인이 보기에 좋아 보인다''는 의미로 LGTM 을 보내줌

 

 

Microsoft

     개발자 업무 = 개발 50% + 리뷰 50%

팀별로 자유롭게 자동화된 검토 도구를 활용할 수 있고, 프로세스도 자율적으로 구성 가능
개발자들간에 코드 리뷰의 코멘트를 명확히 이해하고 전달할 수 있도록 이모지 활용

 

네카라쿠배 + 스타트업

     리뷰는 당연하다

 

 

 


참조
- https://techwell.wooritech.com/blog/2021/04/19/%EC%BD%94%EB%93%9C%EB%A6%AC%EB%B7%B0/
- https://tech.kakao.com/2022/03/17/2022-newkrew-onboarding-codereview/-  
- https://d2.naver.com/helloworld/6033708
- https://www.samsungsds.com/kr/insights/global_code_review.html

 

 

'코드리뷰' 카테고리의 다른 글

Gerrit  (0) 2023.09.08