csharp-refactor

C# code refactoring skill. Applies SOLID principles, extracts methods/classes, introduces design patterns, and modernizes syntax. Use when improving code maintainability, addressing code smells, or modernizing legacy C# code.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "csharp-refactor" with this command: npx skills add jeongheonk/c-sharp-custom-marketplace/jeongheonk-c-sharp-custom-marketplace-csharp-refactor

C# 리팩토링 스킬

유지보수성, 가독성, 베스트 프랙티스 준수를 위해 C# 코드를 체계적으로 리팩토링합니다.

중요: 모든 결과는 반드시 한국어로 작성합니다. 코드 식별자, 기술 용어, 패턴 이름 등은 원문 그대로 유지하되, 설명·문제점·개선안 등 서술 부분은 한국어를 사용합니다.

인자

  • $ARGUMENTS[0]: 대상 파일 경로 (선택, 미지정 시 .cs 파일 탐색)
  • $ARGUMENTS[1]: 리팩토링 유형 (선택): solid, pattern, modern, extract, all
    • 미지정 시: 모든 카테고리를 스캔하고, 발견된 항목만 적용

실행 단계

1단계: 대상 식별

파일이 지정되지 않은 경우 ($ARGUMENTS[0]이 비어있음):

  • 최근 수정된 .cs 파일 탐색
  • 사용자에게 대상 파일 선택 요청

2단계: 코드 분석

대상 코드를 읽고 리팩토링 기회를 분석합니다.

TargetFramework 확인: .csproj에서 <TargetFramework>를 읽어 C# 버전을 파악하고, 해당 버전에서 사용 가능한 기능만 제안합니다.

3단계: 리팩토링 적용

$ARGUMENTS[1] 기준 또는 전체 카테고리를 분석합니다:

리팩토링 카테고리

SOLID 리팩토링 (solid)

위반리팩토링
SRPExtract class, 책임 분리
OCPStrategy/Template Method 패턴 도입
LSP상속 계층 수정, Composition 사용
ISP인터페이스를 작은 단위로 분리
DIP인터페이스 추출, 의존성 주입

Pattern 도입 (pattern)

Code Smell권장 패턴
복잡한 객체 생성Builder, Factory Method
타입별 다중 조건문Strategy, State
전역 상태 접근Singleton (신중하게), DI
복잡한 하위 시스템Facade
트리/복합 구조Composite
동적 기능 추가Decorator
요청 처리 체인Chain of Responsibility

Modern C# 문법 (modern)

기존 문법Modern 대안최소 버전
생성자 + 필드 할당Primary constructorC# 12
new List<T> { ... }Collection expressions [...]C# 12
다중 null 체크Pattern matching, ?., ??C# 8
장황한 switch 문Switch expressionsC# 8
수동 INPC 구현[ObservableProperty] (CommunityToolkit.Mvvm)-
변경 가능한 프로퍼티 (non-MVVM)required, initC# 11
단순 데이터용 classRecord typesC# 9
전통적 foreachLINQ (적절한 경우)-

Extract 리팩토링 (extract)

  • Extract Method: 긴 메서드 → 작고 집중된 메서드
  • Extract Class: 큰 클래스 → 여러 응집된 클래스
  • Extract Interface: 구체 의존성 → 인터페이스 추상화
  • Extract Base Class: 중복 코드 → 공유 기반 클래스
  • Extract Parameter Object: 다수 매개변수 → 단일 객체

출력 형식

모든 내용은 한국어로 작성합니다. 코드 식별자와 기술 용어는 원문을 유지합니다.

# 리팩토링 결과

## 대상
- 파일: {파일 경로}
- 리팩토링 유형: {유형}
- TargetFramework: {버전}

## 적용된 변경

### {리팩토링 이름}
- 위치: `file.cs:line`
- 변경 전:
```csharp
// 기존 코드
  • 변경 후:
// 리팩토링된 코드
  • 이점: {설명}

요약

  • 총 리팩토링: {N}건
  • 변경된 줄 수: {N}
  • 새로 생성된 파일: {목록}

추가 권장 사항

  • 추가로 적용 가능한 개선 사항
  • 고려할 관련 패턴

## 에러 처리

| 상황 | 처리 |
|------|------|
| `.cs` 파일 없음 | "리팩토링 대상 .cs 파일이 없습니다" 메시지 출력 후 종료 |
| 대상 파일 미발견 | 사용자에게 파일 경로 재확인 요청 |
| TargetFramework < net8.0 | C# 12 전용 기능 제안 제외, 경고 노트 출력 |

## 가이드라인

- 기존 기능을 유지합니다 (동작 변경 없음)
- 대규모 재작성이 아닌 점진적 변경을 합니다
- 영리함보다 가독성을 우선합니다
- 팀의 패턴 친숙도를 고려합니다
- 로직이 명확하지 않은 경우에만 주석을 추가합니다
- 테스트 프로젝트가 존재하면 `dotnet test` 실행 후 회귀 없음을 확인합니다

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

csharp-code-review

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

csharp-test-develop

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

csharp-tdd-develop

No summary provided by upstream source.

Repository SourceNeeds Review
General

wpf-mvvm-generator

No summary provided by upstream source.

Repository SourceNeeds Review