코드 리팩토링을 위한 효과적인 프롬프트 패턴을 알아봅니다.
리팩토링 프롬프트 구조
구조 개선
함수 분리
다음 코드를 더 작은 함수들로 분리해줘.
[긴 함수 코드]
목표:
- 단일 책임 원칙
- 재사용 가능한 단위
- 테스트 용이성
제약:
- 동작 변경 없이
- 함수당 20줄 이하
- 명확한 함수명
클래스 리팩토링
다음 클래스를 리팩토링해줘.
[현재 클래스 코드]
문제점:
- 너무 많은 책임
- 긴 메서드
- 중복 코드
요청:
- 관심사 분리
- 헬퍼 클래스 추출
- 인터페이스 정의
- 의존성 주입
모듈 구조화
다음 파일을 여러 모듈로 분리해줘.
[긴 파일 코드]
분리 기준:
- 기능별 모듈
- 타입 정의 분리
- 유틸리티 분리
- 상수 분리
결과물:
- 폴더 구조
- 각 파일 내용
- index.ts (배럴 파일)
가독성 향상
변수명 개선
다음 코드의 변수명과 함수명을 개선해줘.
[코드]
가이드라인:
- 의미를 명확히 전달
- 약어 사용 최소화
- 일관된 명명 규칙
- 동사/명사 적절히 사용
Before/After 형식으로 보여줘
조건문 단순화
복잡한 조건문을 단순화해줘.
[복잡한 if-else 코드]
기법:
- Early return
- Guard clauses
- 조건 추출 (의미 있는 변수/함수)
- 중첩 제거
각 단계별로 설명 포함
매직 넘버 제거
매직 넘버와 문자열을 상수로 추출해줘.
[코드]
요청:
- 상수 이름 부여
- 적절한 위치에 정의
- enum 사용 고려
- 타입 안전성 확보
성능 최적화
알고리즘 개선
다음 코드의 성능을 개선해줘.
[비효율적인 코드]
분석 요청:
- 현재 시간 복잡도
- 병목 지점
- 개선된 알고리즘
- 개선 후 복잡도
벤치마크 코드도 포함
메모리 최적화
메모리 사용을 최적화해줘.
[코드]
문제:
- 불필요한 복사
- 큰 배열 처리
- 메모리 누수 가능성
해결:
- 참조 사용
- 스트리밍 처리
- 적절한 정리
React 성능
React 컴포넌트 성능을 최적화해줘.
[컴포넌트 코드]
확인 사항:
- 불필요한 리렌더링
- 무거운 계산
- 번들 크기
적용할 기법:
- React.memo
- useMemo / useCallback
- 코드 스플리팅
- 가상화
디자인 패턴
패턴 적용
적절한 디자인 패턴을 적용해줘.
[현재 코드]
문제:
- 여러 조건에 따른 분기
- 객체 생성 로직 복잡
- 변경에 취약한 구조
고려할 패턴:
- Strategy
- Factory
- Observer
- Decorator
패턴 선택 이유도 설명
의존성 역전
의존성 역전 원칙을 적용해줘.
[현재 코드]
변경 사항:
- 인터페이스 추출
- 의존성 주입
- 구현 분리
결과:
- 테스트 용이성 향상
- 유연한 확장
- 낮은 결합도
타입 강화
any 제거
다음 코드에서 any 타입을 제거해줘.
[any가 많은 코드]
요청:
- 적절한 타입 정의
- 제네릭 활용
- 타입 가드 추가
- unknown 사용 고려
타입 좁히기
런타임 타입 체크를 타입 안전하게 만들어줘.
[타입 체크 코드]
적용:
- 타입 가드 함수
- discriminated union
- assertion 함수
- Zod 스키마 (필요시)
코드 스멜 제거
중복 제거
중복 코드를 제거해줘.
[중복이 있는 코드]
기법:
- 공통 함수 추출
- 제네릭 활용
- 상속/합성
- 고차 함수
DRY 원칙 적용
긴 매개변수 목록
긴 매개변수 목록을 개선해줘.
function createUser(
name, email, password, phone,
address, city, country, zipCode,
role, department, ...
)
해결:
- 객체 매개변수
- Builder 패턴
- 옵션 객체
- 관련 매개변수 그룹화
실전 프롬프트
전체 리팩토링
다음 코드를 전체적으로 리팩토링해줘.
[레거시 코드]
관점:
1. 구조: 모듈 분리
2. 가독성: 명명, 포매팅
3. 타입: TypeScript 강화
4. 패턴: 적절한 패턴 적용
5. 테스트: 테스트 가능한 구조
단계별로 변경하고 각 단계 설명 포함
점진적 개선
다음 코드를 점진적으로 개선해줘.
[문제 있는 코드]
우선순위:
1. 버그 위험이 높은 부분
2. 가장 자주 변경되는 부분
3. 성능 문제
4. 가독성 문제
각 단계가 독립적으로 배포 가능하게
팁
| 팁 | 설명 |
|---|---|
| 코드 전체 제공 | 컨텍스트 파악 |
| 문제점 명시 | 개선 포인트 지적 |
| 제약 조건 | 동작 유지 명시 |
| 단계별 요청 | 점진적 개선 |
| 설명 요청 | 변경 이유 포함 |
리팩토링은 동작을 유지하면서 구조를 개선합니다.