Development
효과적인 코드 리뷰 방법
코드 리뷰를 통해 팀의 코드 품질을 높이고 성장하는 방법을 알아봅니다.
코드 리뷰는 버그를 찾는 것 이상의 가치가 있습니다. 지식 공유, 코드 품질 향상, 팀 문화 형성에 중요한 역할을 합니다.
리뷰어로서
좋은 리뷰의 원칙
코드의 의도를 먼저 이해하려고 노력합니다. PR 설명과 관련 이슈를 읽고 맥락을 파악합니다.
나쁜 리뷰:
"이 코드는 이상합니다."
"이건 안티패턴입니다."
좋은 리뷰:
"이 부분에서 N+1 쿼리가 발생할 수 있을 것 같습니다.
posts를 가져올 때 user 정보도 함께 로드하면 어떨까요?
예: include: { user: true }"
질문 형태로 피드백
명령보다 질문이 더 건설적입니다.
명령형:
"이 함수를 분리하세요."
질문형:
"이 함수가 두 가지 역할을 하는 것 같은데,
validateUser와 saveUser로 분리하면 테스트하기 더 쉬울 것 같아요.
어떻게 생각하시나요?"
중요도 표시
모든 코멘트가 같은 중요도는 아닙니다.
[필수] 보안 취약점이 있습니다.
[권장] 이 부분은 성능 개선의 여지가 있습니다.
[제안] 변수명을 좀 더 명확하게 하면 좋을 것 같습니다.
[궁금] 이 로직을 선택한 이유가 있나요?
[칭찬] 이 패턴 좋네요!
긍정적인 피드백도
좋은 코드에는 칭찬합니다. 팀원의 성장을 인정해주세요.
"이 에러 처리 방식 좋네요. 사용자 경험을 잘 고려했습니다."
"테스트 케이스가 꼼꼼하네요!"
"이 추상화 덕분에 확장하기 쉬워졌습니다."
작성자로서
PR을 작게 유지
300줄 이하의 PR이 리뷰하기 좋습니다. 큰 변경은 여러 PR로 나눕니다.
1. 리팩토링 PR (기능 변경 없음)
2. 새 기능 추가 PR
3. 테스트 추가 PR
PR 설명 잘 쓰기
## 변경 사항
- 사용자 인증 로직을 JWT에서 세션 기반으로 변경
- 리프레시 토큰 로직 제거
## 변경 이유
- 모바일 앱에서 토큰 관리가 복잡했음
- 보안 요구사항 변경 (OWASP 권고)
## 테스트
- 로그인/로그아웃 플로우 테스트 완료
- 세션 만료 시나리오 테스트 완료
## 스크린샷
(UI 변경 시 첨부)
## 관련 이슈
Closes #123
셀프 리뷰 먼저
PR을 올리기 전에 자신의 코드를 먼저 리뷰합니다.
[ ] 불필요한 console.log 제거
[ ] 주석 처리된 코드 제거
[ ] 테스트 통과 확인
[ ] 린트 에러 없음
[ ] 변수/함수명이 명확한지 확인
리뷰 의견에 열린 자세
방어적 반응:
"그건 시간이 없어서 그랬어요."
"원래 이렇게 하는 거예요."
건설적 반응:
"좋은 지적이네요. 말씀하신 방식으로 수정하겠습니다."
"이렇게 한 이유는 X 때문인데, 더 좋은 방법이 있을까요?"
무엇을 확인할까
필수 확인 사항
보안
- SQL 인젝션 가능성
- XSS 취약점
- 민감한 정보 노출
- 인증/인가 로직
로직
- 엣지 케이스 처리
- 에러 처리
- null/undefined 처리
성능
- 불필요한 렌더링
- N+1 쿼리
- 메모리 누수 가능성
선택 확인 사항
코드 스타일
- 일관된 네이밍
- 함수 크기
- 중복 코드
가독성
- 복잡한 로직에 주석
- 명확한 변수명
- 적절한 추상화
리뷰 문화 만들기
규칙 정하기
- PR은 24시간 이내 첫 리뷰
- 최소 1명 승인 필수
- CI 통과 후 머지
- 작성자가 머지
자동화 활용
린터, 포매터, 테스트는 자동화합니다. 사람은 기계가 할 수 없는 리뷰에 집중합니다.
마무리
코드 리뷰는 팀 문화입니다. 비난이 아닌 개선을 목표로, 상호 존중하는 태도가 중요합니다.
처음에는 시간이 걸리지만, 좋은 리뷰 문화는 장기적으로 팀의 생산성과 코드 품질을 크게 높여줍니다.