코드 리뷰의 주된 목적은 유지보수하기 어려운 코드를 찾는 것

2 hours ago 3
  • 코드 리뷰는 버그를 잡아내거나 무결성을 보장하는 절차보다, 나중에 유지보수하기 어려운 코드를 미리 드러내는 과정에 가까움
  • 리뷰어가 코드를 읽어도 이해하기 어렵다면, 같은 문제를 미래의 유지보수자도 겪을 가능성이 높음
  • 수정은 원 작성자가 맥락을 기억하고 있는 지금 하는 편이 낫고, 코드 검사만으로 버그를 안정적으로 찾겠다는 기대는 현실적이지 않음
  • “버그를 찾아라”보다 “이해해 보고, 이해 안 되는 부분을 표시하라”가 리뷰어에게 더 실행 가능한 과제임
  • 좋은 리뷰는 모든 것을 완벽히 증명하는 일이 아니라, 이해되지 않는 지점에 메모를 남기고 개선을 요구하는 데서 시작함

코드 리뷰의 초점 바꾸기

  • 코드 리뷰의 핵심 목적은 리뷰어가 버그를 찾는 것이 아니며, 코드에 버그가 없다고 보증하는 것도 아님
  • 코드만 훑어 일반적으로 버그를 찾아낼 수 있다는 기대는 실무적으로 약함
  • 그래서 리뷰의 중심은 “맞는 코드인가”보다 “다른 사람이 나중에 읽고 고칠 수 있는가”에 놓임

이해하기 어려운 코드는 유지보수 위험 신호

  • 리뷰어는 코드가 무엇을 하고, 어떻게 동작하는지 이해하려고 읽음
  • 이해되지 않는 부분은 미래의 유지보수자가 막힐 가능성이 있는 위험 신호가 됨
  • 이런 코드는 원 작성자가 아직 맥락을 기억하고 있을 때 바로 고치는 편이 낫음

버그 찾기보다 실행 가능한 리뷰 과제

  • “이 코드에서 버그를 찾아보라”는 요청은 성공 여부를 판단하기 어려운 작업임
  • 버그를 몇 개 찾아도 더 숨어 있는 버그를 놓쳤을 수 있어, 리뷰어 입장에서는 실패만 명확해지기 쉬움
  • 반대로 “이 코드를 이해해 보고, 이해할 수 없으면 지적하라”는 요청은 기준이 더 분명함
    • 모든 것을 완벽히 이해할 필요는 없음
    • 이해하지 못한 부분을 기록하면 됨
    • 전체를 이해하려고 시도하고, 막힌 지점에 메모를 남기면 리뷰의 역할을 수행한 것임

실무에서의 리뷰 기준

  • 리뷰어가 이해하지 못한 코드는 그 자체로 수정 대상이 될 수 있음
  • 리뷰 코멘트는 버그 보고뿐 아니라 설명 부족, 구조 문제, 읽기 어려운 흐름을 드러내는 역할을 함
  • 이 기준에서는 코드의 정당성을 증명하는 일보다, 이후 팀원이 읽고 다룰 수 있는 상태로 만드는 일이 중요함

버그 발견은 부수 효과

  • 코드 리뷰가 버그를 전혀 찾지 못한다는 뜻은 아님
  • 버그는 리뷰 중 발견될 수 있지만, 모든 버그나 대부분의 버그를 찾는 방법으로 기대하기는 어려움
  • 더 현실적인 성공 조건은 이해 가능성을 점검하고, 유지보수하기 어려운 부분을 원 작성자와 함께 바로 개선하는 것임
Read Entire Article