컨텐츠로 건너뛰기

대규모 코드베이스 리팩토링

대규모 코드베이스에서 핵심 서비스 클래스를 안전하게 리팩토링합니다. OpenCode는 임포트 그래프를 탐색하고, 타입을 업데이트하며, 아무것도 깨지지 않았는지 검증합니다.

이 레시피를 사용하는 경우

  • 널리 쓰이는 클래스, 함수, 모듈의 이름을 변경하거나 이동해야 할 때.
  • 변경이 많은 파일에 걸쳐 있어 수동 편집이 오류를 낼 때.
  • 각 단계를 커밋하여 쉽게 되돌리고 싶을 때.

전제 조건

  • OpenCode를 설치하고 충분한 능력의 LLM 공급자를 설정했을 것.
  • 깨끗한 작업 트리(현재 변경 사항을 커밋하거나 stash).
  • 결과를 검증할 테스트 스위트 또는 빌드 명령.

단계

  1. 깨끗한 베이스에서 시작

    현재 작업을 커밋하여 OpenCode가 알려진 상태에서 동작하게 합니다.

    git status
    git add -A && git commit -m "wip: before refactor"
  2. 리팩토링 목표 설명

    무엇을 이름 변경할지, 원하는 최종 상태를 정확히 알립니다.

    프로젝트 전체의 OldService 클래스를 NewService로 이름 변경하세요. 모든 임포트, 타입 참조, 사용처를 업데이트하고 공개 동작은 바꾸지 마세요.

  3. 영향 범위를 OpenCode에 평가시키기

    OpenCode는 임포트 그래프를 읽고 편집 전에 영향받는 모든 파일을 나열하여 영향 반경을 확인하게 합니다.

  4. 편집 검토 및 적용

    제안된 변경을 검토합니다. 논리적 그룹으로 묶어 커밋하도록 OpenCode에 지시합니다.

    git commit -m "refactor: rename OldService to NewService"
  5. 검증

    빌드와 테스트를 실행합니다. 실패하면 해당 오류를 수정하도록 OpenCode에 지시합니다.

    npm run build && npm test

핵심 프롬프트

OldService에 대한 모든 참조(임포트, 타입 주석, 문자열 사용 포함)를 찾으세요. 모두 NewService로 이름 변경하세요. 먼저 파일 목록을 보여주고, 그룹화하여 커밋하며 적용하세요.

흔한 주의점

  • 부분적 이름 변경: 중간에 멈추면 남은 참조가 빌드를 깨뜨립니다. 반드시 OpenCode가 끝까지 완료하게 한 뒤 검증하세요.
  • 문자열 참조: 동적 참조(예: container.get('OldService'))는 수동 처리가 필요할 수 있습니다——명시적으로 OpenCode에 지적하세요.
  • 생성 파일: 빌드 산출물을 .gitignore에 추가하여 실수로 편집되지 않게 합니다.

관련 문서

  • 정책 — OpenCode가 프로젝트 전체에 변경사항을 적용하는 방법 제어
  • 설정 — OpenCode 동작을 관리하는 opencode.json 파일

관련 레시피

관련 문서

다음 단계