개발ChatGPTClaudeGemini

리팩토링 프롬프트: 동작은 그대로 두고 읽기 쉽게 나누기

길고 복잡한 코드를 붙이면 동작은 바꾸지 않고 함수를 나누고 이름을 고친 코드를 줍니다. 바꾸기 전에 지금 동작을 잡아 두는 테스트부터 써요.

  1. 프롬프트 복사: 아래 원문을 복사합니다. 로그인은 필요 없습니다.
  2. [ ] 칸 채우기: [예: 파이썬 3.11] [정리할 함수나 파일] [한두 줄 설명] [함수 이름·반환 형식 등] 등 5곳을 내 상황으로 바꿉니다. 모르는 칸은 비워 둬도 돼요. AI 가 지어내지 않고 물어봅니다.
  3. AI 에 보내기: ChatGPT·Claude·Gemini 대화창에 붙여 넣고 보냅니다.

프롬프트 원문

당신은 오래된 코드를 많이 다뤄 본 시니어 개발자입니다. 아래 코드를 리팩토링해 주세요. 가장 중요한 원칙은 「겉으로 보이는 동작은 하나도 바꾸지 않는다」입니다.

먼저 할 것
- 이 코드가 하는 일을 입력과 출력 기준으로 정리하세요.
- 지금 동작을 잡아 두는 테스트를 먼저 3~5개 쓰세요. 경계값(빈 목록, 0, 없는 값)을 꼭 넣고, 지금 코드가 이상하게 동작하는 부분이 있어도 지금 결과 그대로를 기대값으로 적으세요. 그런 곳은 「지금 동작이 맞는지 확인 필요」로 따로 표시하세요.

고칠 때
- 고칠 곳 목록: 긴 함수, 같은 코드 반복, 뜻이 안 보이는 이름, 깊은 중첩, 숫자·문자열이 그대로 박힌 곳을 위치와 함께 짚으세요.
- 한 번에 다 바꾸지 말고 작은 단계로 나누세요. 단계마다 무엇을 바꾸는지 한 줄, 그 단계가 끝나도 테스트가 통과하는지.
- 함수는 한 가지 일만 하게 나누고, 이름은 하는 일이 보이게 지으세요.
- 제가 바꾸지 말라고 한 것(함수 이름, 반환 형식, 밖에 공개된 부분)은 건드리지 마세요.
- 성능을 바꾸는 수정이나 버그 수정은 리팩토링과 섞지 말고 「따로 할 일」에 적으세요.

만들어 줄 것
1. 하는 일 정리와 지금 동작을 잡아 두는 테스트
2. 고칠 곳 목록
3. 단계별 리팩토링 계획
4. 최종 코드(전체)
5. 바뀐 점 표: 전 / 후 / 이유
6. 따로 할 일(버그로 보이는 곳, 성능)과 제가 직접 확인할 것 2~3개

정보가 모자라면 지어내지 말고 그 자리를 「확인 필요」로 남긴 채 먼저 써 주세요. 그리고 끝에, 무엇을 더 알려 주면 좋아지는지 한 줄로 물어보세요.

정리할 코드
- 언어·버전: [예: 파이썬 3.11]
- 코드: [정리할 함수나 파일]
- 이 코드가 하는 일: [한두 줄 설명]
- 바꾸면 안 되는 것: [함수 이름·반환 형식 등]
- 테스트 도구: [pytest / Jest / 없음]
바꿔 넣을 칸: [예: 파이썬 3.11][정리할 함수나 파일][한두 줄 설명][함수 이름·반환 형식 등][pytest / Jest / 없음]

이렇게 넣으면 이런 답이 와요

예시 입력
- 언어·버전: 자바스크립트, Node 20
- 코드:
function calc(order) {
  let total = 0;
  for (const item of order.items) {
    if (item.type == "food") {
      if (item.qty > 10) {
        total = total + item.price * item.qty * 0.9;
      } else {
        total = total + item.price * item.qty;
      }
    } else {
      if (item.qty > 10) {
        total = total + item.price * item.qty * 0.95;
      } else {
        total = total + item.price * item.qty;
      }
    }
  }
  if (order.coupon == "WELCOME") total = total - 3000;
  if (total < 0) total = 0;
  if (order.member == true && total > 50000) total = total * 0.97;
  return Math.round(total);
}
- 이 코드가 하는 일: 장바구니 주문 금액을 계산함. 같은 상품을 10개 넘게 사면 음식은 10%, 나머지는 5% 할인. 쿠폰 WELCOME 은 3,000원 할인. 회원이고 5만 원이 넘으면 3% 더 할인(예시용 가상 쇼핑몰)
- 바꾸면 안 되는 것: 함수 이름 calc 와 반환값(원 단위 정수)
- 테스트 도구: 없음
실제로 돌린 결과

위 예시 입력으로 이 프롬프트를 AI(Claude)에 그대로 넣어 받은 답이에요. 모델과 시점에 따라 표현은 달라질 수 있어요.

더 잘 쓰는 법

  • 한 번에 큰 파일을 넣기보다 가장 손대고 싶은 함수 하나부터 넣으세요. 테스트와 바뀐 점을 같이 보기 쉬워요.
  • 리팩토링한 코드를 넣기 전에, 받은 테스트를 지금 코드에 먼저 돌려 통과하는지 보세요. 지금 코드에서 통과해야 리팩토링 뒤의 통과가 의미가 있어요.
  • 버그로 보이는 곳이 나오면 리팩토링과 따로, 테스트를 하나 더 쓰고 고치세요.

자주 묻는 질문

리팩토링하면 동작이 바뀌지 않나요?

바뀌면 리팩토링이 아니에요. 그래서 이 프롬프트는 바꾸기 전에 지금 동작을 기대값으로 적은 테스트를 먼저 쓰게 했어요. 최종 코드가 그 테스트를 모두 통과하는지 꼭 돌려 보세요.

테스트가 하나도 없는 코드도 되나요?

됩니다. 「테스트 도구」 칸에 「없음」이라고 적으면 따로 설치 없이 돌릴 수 있는 간단한 확인 코드로 써 줘요. 나중에 pytest나 Jest를 들이면 그대로 옮길 수 있어요.

리팩토링과 코드 리뷰는 뭐가 다른가요?

리뷰는 내보내도 되는지 문제를 찾는 일이고, 리팩토링은 동작을 지키면서 구조를 바꾸는 일이에요. 고친 코드를 한 번 더 보고 싶으면 코드 리뷰 프롬프트에 넣으세요.

에러가 나는 코드도 리팩토링해도 되나요?

에러부터 잡는 게 먼저예요. 코딩 프롬프트로 원인을 고친 다음, 통과하는 상태에서 리팩토링하세요.

#리팩토링#리팩터링#코드 정리#클린 코드#함수 분리#코드 개선#챗GPT 리팩토링#클로드 리팩토링#코딩 프롬프트