대규모 코드베이스 리팩토링
대규모 코드베이스에서 핵심 서비스 클래스를 안전하게 리팩토링합니다. OpenCode는 임포트 그래프를 탐색하고, 타입을 업데이트하며, 아무것도 깨지지 않았는지 검증합니다.
이 레시피를 사용하는 경우
- 널리 쓰이는 클래스, 함수, 모듈의 이름을 변경하거나 이동해야 할 때.
- 변경이 많은 파일에 걸쳐 있어 수동 편집이 오류를 낼 때.
- 각 단계를 커밋하여 쉽게 되돌리고 싶을 때.
전제 조건
- OpenCode를 설치하고 충분한 능력의 LLM 공급자를 설정했을 것.
- 깨끗한 작업 트리(현재 변경 사항을 커밋하거나 stash).
- 결과를 검증할 테스트 스위트 또는 빌드 명령.
단계
-
깨끗한 베이스에서 시작
현재 작업을 커밋하여 OpenCode가 알려진 상태에서 동작하게 합니다.
git status git add -A && git commit -m "wip: before refactor" -
리팩토링 목표 설명
무엇을 이름 변경할지, 원하는 최종 상태를 정확히 알립니다.
프로젝트 전체의
OldService클래스를NewService로 이름 변경하세요. 모든 임포트, 타입 참조, 사용처를 업데이트하고 공개 동작은 바꾸지 마세요. -
영향 범위를 OpenCode에 평가시키기
OpenCode는 임포트 그래프를 읽고 편집 전에 영향받는 모든 파일을 나열하여 영향 반경을 확인하게 합니다.
-
편집 검토 및 적용
제안된 변경을 검토합니다. 논리적 그룹으로 묶어 커밋하도록 OpenCode에 지시합니다.
git commit -m "refactor: rename OldService to NewService" -
검증
빌드와 테스트를 실행합니다. 실패하면 해당 오류를 수정하도록 OpenCode에 지시합니다.
npm run build && npm test
핵심 프롬프트
OldService에 대한 모든 참조(임포트, 타입 주석, 문자열 사용 포함)를 찾으세요. 모두NewService로 이름 변경하세요. 먼저 파일 목록을 보여주고, 그룹화하여 커밋하며 적용하세요.
흔한 주의점
- 부분적 이름 변경: 중간에 멈추면 남은 참조가 빌드를 깨뜨립니다. 반드시 OpenCode가 끝까지 완료하게 한 뒤 검증하세요.
- 문자열 참조: 동적 참조(예:
container.get('OldService'))는 수동 처리가 필요할 수 있습니다——명시적으로 OpenCode에 지적하세요. - 생성 파일: 빌드 산출물을
.gitignore에 추가하여 실수로 편집되지 않게 합니다.
관련 문서
관련 레시피
- bug-hunting —
reason.refactor.to-bug-hunting - mcp-server —
reason.refactor.to-mcp - git-commit-workflow —
reason.refactor.to-git
관련 문서
다음 단계
- bug-hunting —
next.refactor.to-bug-hunting