---
name: code-refactoring
description: 코드 리팩토링 권장사항, 성능 분석, 구체적인 코드 패치를 제공합니다. 리팩토링, 코드 개선, 성능 최적화 요청 시 활성화됩니다.
allowed-tools: Read, Write, Edit, Glob, Grep
---

# Code Refactoring

코드 품질 개선을 위한 리팩토링 분석 및 권장사항을 제공하는 스킬입니다.

## 기능

### 분석 영역
- **코드 스멜 탐지**: 중복 코드, 긴 메서드, 거대 클래스
- **복잡도 분석**: 순환 복잡도, 인지 복잡도
- **의존성 분석**: 결합도, 응집도 평가
- **성능 이슈**: 비효율적 알고리즘, N+1 쿼리
- **가독성**: 네이밍, 구조화, 주석 품질

### 리팩토링 패턴
- Extract Method / Extract Class
- Replace Conditional with Polymorphism
- Introduce Parameter Object
- Replace Magic Number with Symbolic Constant
- Decompose Conditional
- Replace Nested Conditional with Guard Clauses

### 출력
- 문제점 상세 설명
- 리팩토링 전후 코드 비교
- 구체적인 수정 패치
- 성능 영향 분석

## 분석 프로세스

1. 코드베이스 스캔
2. 코드 스멜 및 안티패턴 탐지
3. 복잡도 메트릭 계산
4. 개선 우선순위 산정
5. 리팩토링 제안 생성
6. 전후 비교 코드 제공

## 리포트 구조

```markdown
# 리팩토링 분석 리포트

## 요약
- 분석 파일: N개
- 발견된 코드 스멜: N개
- 권장 리팩토링: N건

## 🔴 High Impact 리팩토링

### 1. [파일명] 긴 메서드 분리
**현재 상태**
- 메서드: `processOrder()`
- 라인 수: 150줄
- 순환 복잡도: 25

**문제점**
- 단일 책임 원칙 위반
- 테스트 어려움
- 유지보수 복잡

**권장 리팩토링: Extract Method**

Before:
```java
public void processOrder(Order order) {
    // 150줄의 복잡한 로직
}
```

After:
```java
public void processOrder(Order order) {
    validateOrder(order);
    calculateTotal(order);
    applyDiscounts(order);
    processPayment(order);
    sendConfirmation(order);
}

private void validateOrder(Order order) { ... }
private void calculateTotal(Order order) { ... }
// ...
```

**예상 효과**
- 복잡도: 25 → 5
- 테스트 용이성 향상
- 재사용성 증가

## 🟡 Medium Impact 리팩토링
...

## 성능 최적화 제안
...
```

## 사용 예시

```
이 코드를 리팩토링 해줘
src 폴더의 코드 품질을 분석하고 개선점을 알려줘
이 함수의 복잡도를 낮추는 방법을 제안해줘
```

## 출처
Original skill from skills.cokac.com
