개선: 코드 리뷰, 리팩토링, 성능 최적화
1. 코드 리뷰 자동화
PR을 올리기 전 클로드 코드로 사전 리뷰를 받으면 팀 리뷰 부담을 줄이고 품질을 높일 수 있습니다.
/review 명령어 활용
# 변경 사항 스테이징 후
git add .
/review특정 관점으로 리뷰 요청
> @src/api/recipes.py 를 다음 관점에서 리뷰해줘:
1. 보안: SQL 인젝션, XSS, 인증 우회 가능성
2. 성능: N+1 쿼리, 불필요한 DB 호출
3. 에러 처리: 예외 상황이 모두 처리되고 있는지
4. 가독성: 함수 길이, 변수명, 주석
심각도(Critical/Major/Minor)로 분류해줘.자동 리뷰 봇 설정
> GitHub Actions에서 PR이 생성될 때 자동으로 코드 리뷰를 실행하고
결과를 PR 코멘트로 달아주는 워크플로를 만들어줘.
claude -p 명령어를 활용해줘.Writer/Reviewer 패턴 — 편향 없는 리뷰
코드를 작성한 세션과 리뷰하는 세션을 분리하면 더 객관적인 리뷰가 가능합니다:
# 별도 터미널에서 새 claude 세션 시작
claude
> @src/api/recipes.py 이 코드를 리뷰해줘.
이 코드를 처음 보는 시니어 엔지니어 입장에서 봐줘.
- 보안 취약점 (OWASP Top 10 기준)
- 예외 처리 누락
- 테스트하기 어려운 구조
각 이슈를 Critical/High/Medium으로 분류해줘.2. 리팩토링 전략
좋은 코드는 한 번에 완벽하게 작성되지 않습니다. 지속적인 리팩토링이 필요합니다.
코드 스멜 감지
> @app/services/ 폴더의 코드에서 다음 코드 스멜을 찾아줘:
- 너무 긴 함수 (20줄 이상)
- 중복 코드
- 깊은 중첩 (if 3단계 이상)
- 매직 넘버/문자열
각각 어떻게 리팩토링할지 제안해줘.안전한 리팩토링 순서
> create_recipe 함수가 너무 길어서 분리하고 싶어.
테스트를 깨뜨리지 않으면서 안전하게 리팩토링하는 순서를 알려줘.
각 단계마다 테스트를 실행할 수 있게 작은 단위로 나눠줘.Git worktree로 안전한 실험
큰 리팩토링을 시도할 때는 git worktree를 활용해서 메인 브랜치를 보호하세요:
# 별도 디렉터리에서 리팩토링 실험
git worktree add ../recipe-refactor -b feat/refactor-service-layer
cd ../recipe-refactor
claude
> service layer를 repository pattern으로 리팩토링해줘.
기존 테스트가 모두 통과해야 해.
# 결과가 만족스러우면 머지, 아니면 그냥 삭제
git worktree remove ../recipe-refactor리팩토링 자동 실행
> validate_recipe_data 함수의 로직이 3곳에 중복되어 있어.
공통 유틸 함수로 추출하고 기존 3곳을 모두 업데이트해줘.
테스트도 같이 업데이트해줘.3. 성능 최적화
성능 병목 찾기
# Python 프로파일링
python -m cProfile -o profile.stats app/main.py
python -c "import pstats; p = pstats.Stats('profile.stats'); p.sort_stats('cumulative'); p.print_stats(20)" > profile_report.txt
> profile_report.txt 파일을 읽고 가장 느린 함수들을 분석해줘.
각 함수의 최적화 방법을 알려줘.데이터베이스 쿼리 최적화
> @app/services/recipe_service.py 의 get_recipes_with_likes 함수가 느려.
실행 계획을 보니 N+1 쿼리가 발생하고 있어.
SQLAlchemy로 최적화해줘. joinedload 또는 selectinload를 활용해줘.캐싱 전략
> 레시피 목록 API가 매번 DB를 조회해. Redis로 캐싱을 적용해줘.
캐시 무효화 전략도 함께 구현해줘.
(새 레시피 등록 시, 레시피 수정 시 캐시 삭제)4. 코드 품질 메트릭
정적 분석 도구 설정
> 코드 품질을 지속적으로 측정하는 도구들을 설정해줘:
- ruff: 린터
- mypy: 타입 체커
- bandit: 보안 취약점 스캐너
- radon: 복잡도 측정
각 도구의 설정 파일(pyproject.toml)도 작성해줘.복잡도 분석
> radon으로 측정한 결과 recipe_service.py의 복잡도가 높아.
복잡도가 10 이상인 함수들을 단순화해줘.5. 기술 부채 관리
기술 부채는 빠른 개발을 위해 임시방편으로 작성한 코드가 쌓인 것입니다. 방치하면 나중에 더 큰 비용이 듭니다.
기술 부채 인벤토리
> 코드베이스 전체에서 TODO, FIXME, HACK, XXX 주석을 찾아줘.
각 항목을 카테고리별로 분류하고, 처리 우선순위를 제안해줘.
GitHub 이슈로 만들 수 있게 마크다운 형식으로 정리해줘.기술 부채 해결
> TODO: 이 부분 나중에 인덱스 추가할 것 이라고 되어있는 부분들을 찾아서
실제로 PostgreSQL 마이그레이션 파일을 만들어줘.6. 레거시 코드 개선
레거시 코드 이해하기
> 이 5년 된 코드를 이해하기 어려워.
@legacy/data_processor.py
이 파일이 하는 일을 단계별로 설명해줘.
왜 이렇게 복잡한지 이유도 추측해봐.점진적 현대화
> 이 레거시 Python 2 스타일 코드를 Python 3 스타일로 변환해줘.
한 번에 전체를 바꾸지 말고, 테스트 가능한 단계로 나눠서 진행해줘.
각 단계마다 테스트를 통과하는지 확인해가면서 진행해줘.Strangler Fig 패턴
> 레거시 모놀리스에서 레시피 검색 기능을 새 마이크로서비스로 분리하고 싶어.
Strangler Fig 패턴으로 점진적으로 마이그레이션하는 계획을 세워줘.
기존 시스템을 중단하지 않고 전환할 수 있게.7. 체크 리스트
코드 개선 작업을 시작하기 전 확인할 사항들:
- ☐ 현재 테스트 스위트가 통과하는 상태인지 확인
- ☐ 성능 기준선(baseline) 측정 완료
- ☐ 변경 범위와 위험도 파악
- ☐ 롤백 계획 수립 (git worktree 또는 feature branch)
- ☐ 스테이징 환경에서 먼저 테스트
- ☐ 팀원 코드 리뷰 완료
claude로 개선 작업 요약 보고서 생성
git diff main..HEAD | claude -p "이번 리팩토링 작업을 요약해줘.
무엇이 왜 변경됐는지, 기대 효과는 무엇인지를
PR 설명 형식으로 작성해줘."