피드로 돌아가기
I Asked AI to 'Refactor This Nicely' and Got Unwanted Decimals and Dataclasses
Dev.toDev.to
AI/ML

Vague Prompt로 인한 PR Diff 폭증 방지와 AI 리팩토링 제어 전략

I Asked AI to 'Refactor This Nicely' and Got Unwanted Decimals and Dataclasses

Ken Imoto2026년 5월 1일4intermediate

Context

단일 함수 내 계산, 메일 발송, DB 저장이 혼재된 SRP 위반 구조와 SQL Injection 취약점을 가진 40라인의 레거시 코드 분석. 단순한 리팩토링 요청 시 AI가 요청하지 않은 Decimal, Dataclasses 등을 도입하며 불필요한 코드 팽창과 리뷰 비용을 증가시키는 문제 발생.

Technical Solution

  • Reconnaissance와 Execution 단계를 분리한 2단계 프롬프트 전략 채택
  • 구체적인 개선 지점(Specific Improvement Points) 명시를 통한 변경 범위 제한
  • 'Do not make changes beyond what is specified' 제약 조건을 통한 Over-engineering 방지
  • 기존 Test Case 통과 보장 제약 조건을 추가하여 Decimal 도입 등으로 인한 타입 불일치 및 테스트 실패 차단
  • Parameterized Query 도입을 통한 SQL Injection 취약점의 구조적 해결
  • 파일 상단 Import 이동 및 예외 클래스 구체화를 통한 Pythonic 코드 표준 적용

- AI 리팩토링 시 'Nicely' 같은 모호한 형용사 대신 구체적인 개선 리스트 제공 - PR Diff 노이즈 최소화를 위해 명시되지 않은 변경 사항을 금지하는 제약 조건 추가 - 탐색 단계(Vague Prompt)와 실행 단계(Specific Prompt)를 엄격히 구분하여 운용 - 리팩토링 후 float-to-Decimal 변경과 같은 데이터 타입 변환이 기존 테스트에 미치는 영향 검토

원문 읽기