ChatGPT 코드 리팩토링 프롬프트 - 클린 코드 변환 가이드
ChatGPT로 레거시 코드를 클린 코드로 리팩토링하는 프롬프트입니다. SOLID 원칙, 디자인 패턴, 성능 최적화까지 체계적인 리팩토링 가이드를 제공합니다.
프롬프트 사용 방법
- 1단계: 아래 입력 칸에 각 항목에 맞는 정보를 적어주세요
- 2단계: 입력하면 아래 프롬프트가 자동으로 업데이트됩니다
- 3단계: '프롬프트 복사' 버튼을 눌러 ChatGPT/Claude에 붙여넣으세요
💡 입력 칸의 회색 글씨는 예시입니다. 참고해서 작성해보세요!
📝 필요한 정보를 입력해주세요 (총 7개)
분석하거나 수정할 코드
프로그래밍 언어에 대한 값을 입력하세요
코드 목적에 대한 값을 입력하세요
현재 문제점에 대한 값을 입력하세요
우선순위에 대한 값을 입력하세요
분석할 코드
중점에 대한 값을 입력하세요
📋 완성된 프롬프트 (복사해서 사용하세요)
당신은 15년 경력의 리팩토링 전문가입니다. Clean Code, SOLID 원칙, 디자인 패턴을 적용하여 기능 변경 없이 코드 품질을 개선하세요.
## 리팩토링할 코드
```
{{code}}
```
## 코드 컨텍스트
- 프로그래밍 언어: {{프로그래밍_언어}}
- 코드 목적: {{코드_목적}}
- 현재 문제점: {{현재_문제점}}
- 우선순위: {{우선순위}} (성능/가독성/유지보수성/전체)
## 출력 형식
1. 문제 진단: Code Smells, SOLID 위반 사항
2. 리팩토링 전략: 적용 기법 및 이유
3. Before/After 코드 비교
4. 개선 효과: 복잡도/가독성/성능 변화
5. 테스트 가이드: 검증 방법
```
## 간단 버전
```text
다음 코드를 리팩토링해주세요:
```
{{코드}}
```
언어: {{프로그래밍_언어}}, 목적: {{코드_목적}}, 중점: {{중점}}
발견된 문제점, 리팩토링된 코드, 주요 개선사항, 테스트 방법을 포함해주세요. 입력하지 않은 항목은 원래 표시를 유지합니다.
자동 복사를 사용할 수 없습니다. 아래 선택된 내용을 Ctrl+C 또는 ⌘C로 복사하거나, 길게 눌러 복사하세요.
입력값 가이드
| 입력 항목 | 한국어 설명 | placeholder | 예시 |
|---|---|---|---|
| 코드 | 개선하고 싶은 코드를 붙여넣어 주세요 | 함수, 클래스, 모듈 전체 코드를 붙여넣으세요 | function processData(data) { ... } |
| 프로그래밍_언어 | 어떤 언어로 작성된 코드인가요? | Python, JavaScript 중 선택 | Python, JavaScript, Java, Go |
| 코드_목적 | 이 코드가 무엇을 하는 코드인가요? | 예: 사용자 주문 처리 | 사용자 주문 처리, 데이터 변환, API 요청 처리 |
| 현재_문제점 | 어떤 점이 불편하신가요? | 예: 중복 코드가 많음, 성능 저하 | 중복 코드가 많음, 성능 저하, 가독성 떨어짐 |
| 우선순위 | 무엇을 가장 중요하게 개선하고 싶으신가요? | 성능, 가독성, 유지보수성 중 선택 | 성능, 가독성, 유지보수성 |
인풋 필드
[코드]
▼ 코드 에디터 (여러 줄 입력)
placeholder: "개선하고 싶은 코드를 붙여넣어 주세요"
설명: 함수, 클래스, 모듈 전체 코드를 붙여넣어 주세요
[프로그래밍_언어]
▼ 드롭다운 선택
옵션: Python, JavaScript, TypeScript, Java, Go, C++, C#, Rust
placeholder: "Python"
설명: 어떤 언어로 작성된 코드인가요?
[코드_목적]
▼ 텍스트 입력
placeholder: "예: 사용자 주문 처리"
설명: 이 코드가 무엇을 하는 코드인가요? 간단히 설명해주세요
[현재_문제점]
▼ 텍스트 영역 입력
placeholder: "예: 중복 코드가 많음, 함수가 너무 김, 성능 저하"
설명: 어떤 점이 불편하신가요? 구체적으로 설명해주세요
[우선순위]
▼ 라디오 버튼 선택
옵션: ☐ 성능 ☐ 가독성 ☐ 유지보수성 ☐ 전체 균형
설명: 무엇을 가장 중요하게 개선하고 싶으신가요?
Code Smells 감지
| 스멀 | 설명 | 영향도 |
|---|---|---|
| 중복 코드 | 동일/유사 로직 반복 | High |
| 긴 함수 | 함수가 20줄 이상 | Medium |
| 거대 클래스 | 책임이 너무 많음 | High |
| 긴 매개변수 | 4개 이상의 파라미터 | Medium |
| Switch 문 | 다형성으로 대체 가능 | Medium |
SOLID 원칙
| 원칙 | 질문 |
|---|---|
| SRP | 클래스/함수가 하나의 책임만 가지는가? |
| OCP | 확장에는 열려 있고 수정에는 닫혀 있는가? |
| LSP | 자식이 부모를 대체 가능한가? |
| ISP | 인터페이스가 적절히 분리되어 있는가? |
| DIP | 추상화에 의존하는가? |
리팩토링 패턴
| 기법 | 설명 | 사용 시점 |
|---|---|---|
| Extract Method | 함수 분리 | 긴 함수 |
| Replace Conditional | 조건문 → 다형성 | 복잡한 if-else |
| Dependency Injection | 의존성 주입 | 강한 결합 |
| Introduce Parameter Object | 매개변수 객체화 | 긴 매개변수 |
언어별 베스트 프랙티스
| 언어 | 주요 기법 |
|---|---|
| Python | 타입 힌트, Dataclass, Context Manager |
| TypeScript | Optional Chaining, Generic, async/await |
| Java | Stream API, Optional, Record |
| Go | 에러 처리, 고루틴 안전성 |
리팩토링 체크리스트
리팩토링 전
- git 브랜치 생성
- 테스트 작성 (기존 동작 보존)
리팩토링 중
- 한 번에 하나의 변경만
- 각 변경 후 테스트 실행
리팩토링 후
- 모든 테스트 통과
- 성능 벤치마크 실행
주의사항
- 기능 변경 금지: 리팩토링만, 기능 추가는 별도
- 작은 단위: 큰 변경은 나누어 진행
- 테스트 필수: 먼저 테스트 작성
- 벤치마크: Before/After 성능 측정
자주 묻는 질문 (FAQ)
Q: 리팩토링과 기능 추가를 동시에 해도 되나요?
A: 아니요. 절대 금지입니다. 리팩토링은 기능 변경 없이 코드 구조만 개선하는 작업입니다. 기능 추가는 별도 커밋에서 진행하세요. 이유: 문제 발생 시 원인 파악이 어려워집니다.
Q: 리팩토링을 언제 해야 하나요?
A: 다음 상황에서 진행하세요:
- 기능 추가 전: 관련 코드 정리 후 작업
- 버그 수정 후: 근본 원인 해결하며 구조 개선
- 성능 이슈 발견 시: 프로파일링 후 최적화
- 코드 리뷰 피드백: 품질 개선 요청 시
Q: 레거시 코드에 테스트가 없으면 어떻게 하나요?
A: 테스트 우선 작성이 필수입니다:
- 기존 동작을 관찰하여 테스트 작성
- 엣지 케이스 추가
- 리팩토링 진행
- 테스트 통과 확인
Q: 리팩토링 범위는 어느 정도가 적절한가요?
A: 작은 단위로 나누어 진행하세요:
- 함수 단위: 가장 안전, 즉시 검증 가능
- 클래스 단위: 신중하게, 테스트 필수
- 모듈 단위: 큰 위험, 충분한 논의 필요 한 번에 하나의 변경만 적용하는 것이 핵심입니다.
🚀 AI 바로 열기
🔗 관련 프롬프트
ChatGPT 코드 품질 검토 프롬프트 - 전문가 수준 코드 리뷰 가이드
ChatGPT로 코드 품질을 체계적으로 검토하는 프롬프트입니다. 코딩 표준 준수, 보안 취약점 탐지, 성능 최적화, 리팩토링 제안까지 제공합니다.
ChatGPT 테스트 코드 작성 프롬프트 - 단위 테스트/통합 테스트 작성 가이드
ChatGPT로 단위 테스트와 통합 테스트 코드를 작성하는 프롬프트입니다. Jest, Pytest, JUnit 등 다양한 테스트 프레임워크를 활용한 테스트 케이스 설계 방법을 안내합니다.
클로드 리팩토링 가이드 프롬프트 - 코드 품질 개선 및 최적화
Claude로 코드 리팩토링, 성능 최적화, 기술 부채 해결을 수행하는 프롬프트입니다. 유지보수성과 가독성을 높이는 전문적인 코드 개선 가이드입니다.
클로드 코드 리뷰 프롬프트 - 전문가 수준 AI 코드 검토
Claude를 활용한 전문가 수준의 코드 리뷰 프롬프트입니다. 보안 취약점, 성능 이슈, 코드 품질, 아키텍처 문제를 체계적으로 분석하고 개선 제안을 받을 수 있습니다.