이 문서는 KubeMigrate 프로젝트의 코드 리뷰 시 확인해야 할 항목들을 정리한 체크리스트입니다.
- Go 스타일 가이드라인을 준수하는가?
-
gofmt로 포맷팅되었는가? -
golangci-lint검사를 통과했는가? - 네이밍 컨벤션이 일관되는가? (PascalCase, camelCase)
- 패키지명이 소문자로 되어 있는가?
- 모든 공개 함수에 한글 주석이 작성되었는가?
- 주석이 함수의 동작을 명확히 설명하는가?
- 복잡한 로직에 인라인 주석이 있는가?
- API 문서가 업데이트되었는가? (Swagger)
- 모든 에러가 적절히 처리되었는가?
-
response.RespondWithErrorModel을 사용하는가? -
echo.NewHTTPError사용을 최소화했는가? - 에러 메시지가 사용자에게 도움이 되는가?
- 에러 로깅이 적절한가?
-
fmt.Printf대신 구조화된 로깅을 사용하는가? - 로그 레벨이 적절한가? (Error, Warn, Info, Debug)
- 로그에 필요한 컨텍스트 정보가 포함되었는가?
- 민감한 정보가 로그에 노출되지 않았는가?
- 새로운 기능에 대한 테스트가 작성되었는가?
- 테스트 커버리지가 충분한가?
- 테스트가 독립적으로 실행 가능한가?
- 테스트 데이터가 적절히 정리되었는가?
- 불필요한 반복문이나 중첩이 없는가?
- 메모리 누수가 발생할 수 있는 코드가 없는가?
- 데이터베이스 쿼리가 최적화되었는가?
- 캐시를 적절히 활용하고 있는가?
- 사용자 입력이 적절히 검증되었는가?
- SQL 인젝션 가능성이 없는가?
- 민감한 정보가 하드코딩되지 않았는가?
- 인증/인가 로직이 올바른가?
- 파일이 올바른 디렉토리에 위치하는가?
- 패키지 의존성이 올바른 방향인가? (internal → pkg)
- 순환 의존성이 없는가?
- 단일 책임 원칙을 준수하는가?
- 의존성 주입이 적절히 사용되었는가?
- 인터페이스가 적절히 정의되었는가?
- 매직 넘버가 상수로 정의되었는가?
- 환경 변수를 적절히 사용하는가?
- 설정 검증이 충분한가?
- 데이터 바인딩이 안전한가?
- 타입 어설션이 안전한가?
- JSON 직렬화/역직렬화가 올바른가?
- RESTful 원칙을 준수하는가?
- HTTP 상태 코드가 적절한가?
- 요청/응답 형식이 일관되는가?
- API 버전 관리가 올바른가?
-
fmt.Printf사용 금지 -
echo.NewHTTPError직접 사용 금지 - 매직 넘버 사용 금지
- 하드코딩된 문자열 사용 금지
- 패닉 사용 금지
- 구조화된 로깅 사용
- 표준 에러 응답 형식 사용
- 상수 정의 및 사용
- 적절한 주석 작성
- 테스트 코드 작성
- 코드 작성 후: 작성자가 체크리스트를 먼저 확인
- 리뷰 요청 시: 체크리스트 항목들을 확인하여 준비
- 리뷰 진행 시: 각 항목을 체크하며 리뷰
- 리뷰 완료 후: 미완료 항목들을 이슈로 등록
이 체크리스트는 프로젝트의 발전에 따라 지속적으로 업데이트되어야 합니다.
- 새로운 패턴이나 모범 사례 추가
- 프로젝트 특화된 규칙 추가
- 팀 피드백 반영
참고: 이 체크리스트는 코드 품질 향상을 위한 가이드라인입니다. 모든 항목을 완벽히 준수하는 것이 목표이지만, 상황에 따라 유연하게 적용할 수 있습니다.