코드 리뷰 시 중점적으로 살펴볼 항목
-
변경된 내용들이 요구사항에 맞게 동작하는지 다방면으로 살펴보세요.
-
변경된 코드가 기존 기능에 영향을 주거나 사이드 이펙트를 만들 가능성이 없는지 확인하세요.
-
정상 케이스뿐만 아니라 빈 값, null, undefined, 권한 없음, 데이터 없음, 실패 응답 같은 예외 케이스도 고려되었는지 확인하세요.
-
중복된 코드가 없이 재활용 가능한 구조인지 살펴보세요.
같은 기능이거나 비슷한 로직을 사용하는 함수, 컴포넌트, 서비스 로직은 공통화할 수 있어야 합니다. -
하나의 함수, 컴포넌트, 서비스가 너무 많은 책임을 가지고 있지 않은지 확인하세요.
화면 처리, 데이터 가공, API 호출, 비즈니스 로직이 한 곳에 과하게 섞이지 않아야 합니다. -
타입이 명확하게 정의되어 있는지 확인하세요.
any사용을 최소화하고, 요청값·응답값·props·DTO의 타입이 분명해야 합니다. -
API 요청과 응답 구조가 일관적인지 확인하세요.
성공 응답, 실패 응답, 에러 코드, 메시지 형식이 기존 규칙과 맞아야 합니다. -
인증과 권한 검사가 필요한 기능에서 검증이 누락되지 않았는지 확인하세요.
화면에서 버튼을 숨기는 것만으로는 충분하지 않고, 서버에서도 반드시 검증해야 합니다. -
사용자 입력값에 대한 검증이 충분한지 확인하세요.
프론트에서는 UX를 위한 검증을 하고, 백엔드에서는 실제 데이터 보호를 위한 검증을 해야 합니다. -
데이터 변경 작업에서 정합성이 깨질 가능성이 없는지 확인하세요.
주문, 결제, 포인트, 재고, 권한 변경처럼 여러 데이터를 함께 수정하는 경우 트랜잭션이 필요한지 확인해야 합니다. -
민감한 정보가 클라이언트나 API 응답에 노출되지 않는지 확인하세요.
비밀번호, 토큰, 내부 관리값, 서버 전용 환경변수 등이 노출되면 안 됩니다. -
불필요한 렌더링, 중복 API 호출, 무거운 연산, N+1 쿼리 같은 성능 문제가 없는지 확인하세요.
-
에러, 로딩, 빈 데이터 상태가 사용자에게 적절히 처리되는지 확인하세요.
-
코드 이름이 역할을 명확히 표현하는지 확인하세요.
변수명, 함수명, 컴포넌트명, 서비스명이 실제 하는 일을 이해하기 쉬워야 합니다. -
테스트가 필요한 핵심 로직에 테스트가 작성되어 있는지 확인하세요.
특히 권한, 결제, 포인트, 주문, 데이터 병합, 복잡한 조건 분기 로직은 테스트가 필요합니다. -
코드 스타일이 프로젝트 컨벤션과 일치하는지 확인하세요.
import 순서, 파일 위치, 네이밍, 포맷팅이 기존 구조와 맞아야 합니다.
Next.js에서 특히 볼 항목
-
use client가 불필요하게 사용되지 않았는지 확인하세요. -
Server Component와 Client Component의 역할이 적절히 나뉘어 있는지 확인하세요.
-
서버에서 처리할 수 있는 데이터 조회를 불필요하게 클라이언트에서 처리하고 있지 않은지 확인하세요.
-
사용자별 데이터, 공통 데이터, 캐싱 가능한 데이터의 fetch/cache 정책이 적절한지 확인하세요.
-
컴포넌트 props가 과도하게 많거나 boolean 옵션이 지나치게 많아지지 않았는지 확인하세요.
-
상태 관리 위치가 적절한지 확인하세요.
화면 내부 상태, URL 상태, 서버 상태, 전역 상태가 구분되어야 합니다.
NestJS에서 특히 볼 항목
-
Controller가 요청과 응답 처리에 집중하고, 비즈니스 로직은 Service에 있는지 확인하세요.
-
Service가 너무 커지거나 여러 도메인의 책임을 동시에 가지고 있지 않은지 확인하세요.
-
DTO validation이 제대로 적용되어 있는지 확인하세요.
-
Entity를 그대로 응답하지 않고 필요한 응답 DTO나 응답 객체로 변환하는지 확인하세요.
-
인증 Guard, 권한 체크, 본인 리소스 검증이 필요한 API에 누락되지 않았는지 확인하세요.
-
여러 테이블을 함께 변경하는 로직에 트랜잭션이 필요한지 확인하세요.
-
예외 처리가 NestJS의
BadRequestException,NotFoundException,ForbiddenException등으로 일관성 있게 처리되는지 확인하세요. -
Repository 또는 DB 접근 로직이 Service 내부에 과하게 섞이지 않고 관리 가능한 구조인지 확인하세요.
더 핵심만 줄이면
실제 리뷰할 때는 아래 항목만 우선 봐도 좋습니다.
- 변경된 내용이 요구사항에 맞게 동작하는지 다방면으로 살펴보세요.
- 기존 기능에 영향을 주는 사이드 이펙트가 없는지 확인하세요.
- 중복된 코드가 없이 재활용 가능한 구조인지 확인하세요.
- 하나의 함수, 컴포넌트, 서비스가 너무 많은 책임을 가지고 있지 않은지 확인하세요.
- 타입, DTO, props, API 응답 구조가 명확하고 일관적인지 확인하세요.
- 인증/인가, 본인 리소스 검증, 민감정보 노출 문제가 없는지 확인하세요.
- 사용자 입력값과 예외 케이스에 대한 검증이 충분한지 확인하세요.
- 데이터 변경 작업에서 트랜잭션이나 동시성 문제가 없는지 확인하세요.
- 불필요한 렌더링, 중복 API 호출, 비효율적인 DB 쿼리가 없는지 확인하세요.
- 에러, 로딩, 빈 데이터 상태가 적절히 처리되어 있는지 확인하세요.
- 테스트가 필요한 핵심 로직에 테스트가 작성되어 있는지 확인하세요.
- 프로젝트의 기존 구조, 네이밍, 코드 스타일과 일관성이 있는지 확인하세요.
개인적으로는 이 정도가 가장 실무적으로 좋습니다.
- 변경된 내용이 요구사항에 맞게 동작하는지 다방면으로 살펴보세요.
- 기존 기능에 영향을 주는 사이드 이펙트가 없는지 확인하세요.
- 중복된 코드 없이 재활용 가능한 구조인지 확인하세요.
- 책임이 적절히 분리되어 있는지 확인하세요.
- 타입과 API 계약이 명확하고 일관적인지 확인하세요.
- 인증/인가와 민감정보 노출 문제가 없는지 확인하세요.
- 예외 케이스와 사용자 입력값 검증이 충분한지 확인하세요.
- 데이터 정합성, 트랜잭션, 동시성 문제가 없는지 확인하세요.
- 성능상 불필요한 렌더링, API 호출, DB 쿼리가 없는지 확인하세요.
- 핵심 로직에 테스트가 작성되어 있는지 확인하세요.
이걸 PR 리뷰 기준으로 쓰면 너무 장황하지 않으면서도 Next.js, NestJS 양쪽에서 중요한 부분은 대부분 커버할 수 있습니다.