동작하는 코드
빈 디렉토리에서 Claude Code를 시작하고 이렇게 요청해보세요:
> Express.js로 간단한 REST API 서버를 만들어줘.
> GET /api/health 엔드포인트가 { status: "ok" }를 반환하면 돼.
Claude가 package.json, server.js 등 여러 파일을 생성합니다. 이번에는 기존 코드를 리팩토링해봅시다:
> server.js에서 라우트를 별도의 routes/ 디렉토리로 분리해줘
Claude가 파일 구조를 재배치하고, import 경로도 알아서 수정합니다.
직접 수정하기
리팩토링 요청의 품질을 비교해보세요:
나쁜 프롬프트:
> 코드 좀 정리해줘
좋은 프롬프트:
> server.js의 에러 처리 미들웨어를 Express의 모범 사례에 맞게 리팩토링해줘.
> 구체적으로: 1) 커스텀 에러 클래스 분리, 2) 에러 핸들러 미들웨어 분리, 3) async/await 에러 래핑
두 결과의 차이를 비교해보세요. Claude에게 구체적으로 요청할수록 결과가 좋습니다.
"왜?" — 프롬프트 작성의 원칙
Claude Code에게 코드를 요청할 때는 동료 개발자에게 요청하듯이 하세요.
좋은 프롬프트의 공식
- 무엇을 — 어떤 작업인지
- 어디에 — 어떤 파일/위치인지
- 어떻게 — 구체적인 요구사항이나 제약 조건
> src/utils/date.ts에 날짜 포맷 유틸 함수를 추가해줘.
> ISO 8601 문자열을 받아서 "2025년 3월 15일" 형태로 변환.
> dayjs 같은 라이브러리 없이 Intl.DateTimeFormat을 사용해줘.
코드 생성 vs 리팩토링
| 작업 | 프롬프트 예시 | | ------------ | -------------------------------------- | | 새 코드 생성 | "~를 만들어줘" | | 리팩토링 | "~를 ~방식으로 바꿔줘" | | 타입 추가 | "이 함수에 TypeScript 타입을 추가해줘" | | 패턴 적용 | "이 코드를 Strategy 패턴으로 바꿔줘" |
심화 학습
Claude가 만든 코드를 무조건 수락해도 될까요?
아닙니다. Claude가 생성한 코드는 반드시 리뷰해야 합니다. 특히:
- 보안 관련 코드 (인증, 입력 검증)
- 데이터베이스 쿼리 (SQL 인젝션 가능성)
- 외부 API 호출 (키 노출, 에러 처리)
diff를 꼼꼼히 읽는 습관이 중요합니다. 이 자체가 코드 리뷰 실력을 키워줍니다.
- 빈 디렉토리에서 "TODO 앱의 백엔드 API를 만들어줘"라고 요청해보세요.
- 생성된 코드를 리뷰하고, 개선할 점을 찾아 리팩토링을 요청해보세요.
- 같은 요청을 두 가지 다른 수준의 구체성으로 해보세요. 결과 차이를 비교해보세요.
Q1. 다음 중 가장 좋은 프롬프트는?
- A) "코드 짜줘"
- B) "좋은 코드 짜줘"
- C) "src/api/users.ts에 사용자 목록 조회 API를 추가해줘. Prisma로 DB 조회하고 페이지네이션 지원해야 해."
- D) "최고의 코드를 작성해줘, 아주 좋은 코드로"