csharp-refactor
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseC# 리팩토링 스킬
C#代码重构技能
유지보수성, 가독성, 베스트 프랙티스 준수를 위해 C# 코드를 체계적으로 리팩토링합니다.
중요: 모든 결과는 반드시 한국어로 작성합니다. 코드 식별자, 기술 용어, 패턴 이름 등은 원문 그대로 유지하되, 설명·문제점·개선안 등 서술 부분은 한국어를 사용합니다.
为提升可维护性、可读性并遵循最佳实践,对C#代码进行系统性重构。
重要:所有结果必须使用中文撰写。 代码标识符、技术术语、模式名称等保留原文形式,说明、问题点、改进方案等描述部分使用中文。
인자
参数
- : 대상 파일 경로 (선택, 미지정 시 .cs 파일 탐색)
$ARGUMENTS[0] - : 리팩토링 유형 (선택):
$ARGUMENTS[1],solid,pattern,modern,extractall- 미지정 시: 모든 카테고리를 스캔하고, 발견된 항목만 적용
- : 目标文件路径(可选,未指定时将搜索.cs文件)
$ARGUMENTS[0] - : 重构类型(可选):
$ARGUMENTS[1],solid,pattern,modern,extractall- 未指定时:扫描所有分类,仅对发现的可重构项进行处理
실행 단계
执行步骤
1단계: 대상 식별
步骤1:目标识别
파일이 지정되지 않은 경우 (이 비어있음):
$ARGUMENTS[0]- 최근 수정된 파일 탐색
.cs - 사용자에게 대상 파일 선택 요청
未指定文件时(为空):
$ARGUMENTS[0]- 搜索最近修改的.cs文件
- 请求用户选择目标文件
2단계: 코드 분석
步骤2:代码分析
대상 코드를 읽고 리팩토링 기회를 분석합니다.
TargetFramework 확인: 에서 를 읽어 C# 버전을 파악하고, 해당 버전에서 사용 가능한 기능만 제안합니다.
.csproj<TargetFramework>读取目标代码并分析重构机会。
确认TargetFramework:从中读取以确定C#版本,仅推荐该版本支持的功能。
.csproj<TargetFramework>3단계: 리팩토링 적용
步骤3:应用重构
$ARGUMENTS[1]基于指定的类型或全部分类进行分析。
$ARGUMENTS[1]리팩토링 카테고리
重构分类
SOLID 리팩토링 (solid
)
solidSOLID重构 (solid
)
solid| 위반 | 리팩토링 |
|---|---|
| SRP | Extract class, 책임 분리 |
| OCP | Strategy/Template Method 패턴 도입 |
| LSP | 상속 계층 수정, Composition 사용 |
| ISP | 인터페이스를 작은 단위로 분리 |
| DIP | 인터페이스 추출, 의존성 주입 |
| 违反项 | 重构方式 |
|---|---|
| SRP单一职责原则 | 提取类、分离职责 |
| OCP开闭原则 | 引入Strategy/Template Method模式 |
| LSP里氏替换原则 | 修改继承层级、使用组合 |
| ISP接口隔离原则 | 将接口拆分为小粒度单元 |
| DIP依赖倒置原则 | 提取接口、依赖注入 |
Pattern 도입 (pattern
)
pattern引入设计模式 (pattern
)
pattern| Code Smell | 권장 패턴 |
|---|---|
| 복잡한 객체 생성 | Builder, Factory Method |
| 타입별 다중 조건문 | Strategy, State |
| 전역 상태 접근 | Singleton (신중하게), DI |
| 복잡한 하위 시스템 | Facade |
| 트리/복합 구조 | Composite |
| 동적 기능 추가 | Decorator |
| 요청 처리 체인 | Chain of Responsibility |
| 代码异味 | 推荐模式 |
|---|---|
| 复杂对象创建 | Builder、Factory Method |
| 基于类型的多条件判断 | Strategy、State |
| 全局状态访问 | Singleton(谨慎使用)、DI |
| 复杂子系统 | Facade |
| 树形/复合结构 | Composite |
| 动态添加功能 | Decorator |
| 请求处理链 | Chain of Responsibility |
Modern C# 문법 (modern
)
modern现代化C#语法 (modern
)
modern| 기존 문법 | Modern 대안 | 최소 버전 |
|---|---|---|
| 생성자 + 필드 할당 | Primary constructor | C# 12 |
| Collection expressions | C# 12 |
| 다중 null 체크 | Pattern matching, | C# 8 |
| 장황한 switch 문 | Switch expressions | C# 8 |
| 수동 INPC 구현 | | - |
| 변경 가능한 프로퍼티 (non-MVVM) | | C# 11 |
| 단순 데이터용 class | Record types | C# 9 |
| 전통적 foreach | LINQ (적절한 경우) | - |
| 原有语法 | 现代化替代方案 | 最低版本 |
|---|---|---|
| 构造函数+字段赋值 | Primary constructor | C# 12 |
| 集合表达式 | C# 12 |
| 多重null检查 | 模式匹配、 | C# 8 |
| 冗长的switch语句 | Switch表达式 | C# 8 |
| 手动实现INPC | | - |
| 可修改属性(非MVVM场景) | | C# 11 |
| 简单数据类 | Record types | C# 9 |
| 传统foreach | LINQ(适当时机) | - |
Extract 리팩토링 (extract
)
extract提取重构 (extract
)
extract- Extract Method: 긴 메서드 → 작고 집중된 메서드
- Extract Class: 큰 클래스 → 여러 응집된 클래스
- Extract Interface: 구체 의존성 → 인터페이스 추상화
- Extract Base Class: 중복 코드 → 공유 기반 클래스
- Extract Parameter Object: 다수 매개변수 → 단일 객체
- Extract Method提取方法:将长方法拆分为小而专注的方法
- Extract Class提取类:将大拆分为多个高内聚的类
- Extract Interface提取接口:将具体依赖转换为接口抽象
- Extract Base Class提取基类:将重复代码提取到共享基类
- Extract Parameter Object提取参数对象:将多个参数合并为单一对象
출력 형식
输出格式
모든 내용은 한국어로 작성합니다. 코드 식별자와 기술 용어는 원문을 유지합니다.
markdown
undefined所有内容均使用中文撰写。代码标识符和技术术语保留原文形式。
markdown
undefined리팩토링 결과
重构结果
대상
目标
- 파일: {파일 경로}
- 리팩토링 유형: {유형}
- TargetFramework: {버전}
- 文件: {文件路径}
- 重构类型: {类型}
- TargetFramework: {版本}
적용된 변경
已应用的变更
{리팩토링 이름}
{重构名称}
- 위치:
file.cs:line - 변경 전:
csharp
// 기존 코드- 변경 후:
csharp
// 리팩토링된 코드- 이점: {설명}
- 位置:
file.cs:line - 变更前:
csharp
// 原有代码- 变更后:
csharp
// 重构后的代码- 优势: {说明}
요약
总结
- 총 리팩토링: {N}건
- 변경된 줄 수: {N}
- 새로 생성된 파일: {목록}
- 重构总数: {N}项
- 修改行数: {N}
- 新增文件: {列表}
추가 권장 사항
额外建议
- 추가로 적용 가능한 개선 사항
- 고려할 관련 패턴
undefined- 可进一步应用的改进点
- 可考虑的相关模式
undefined에러 처리
错误处理
| 상황 | 처리 |
|---|---|
| "리팩토링 대상 .cs 파일이 없습니다" 메시지 출력 후 종료 |
| 대상 파일 미발견 | 사용자에게 파일 경로 재확인 요청 |
| TargetFramework < net8.0 | C# 12 전용 기능 제안 제외, 경고 노트 출력 |
| 场景 | 处理方式 |
|---|---|
| 无.cs文件 | 输出"无可用的.cs重构目标文件"后退出 |
| 目标文件未找到 | 请求用户重新确认文件路径 |
| TargetFramework < net8.0 | 排除C# 12专属功能建议,输出警告说明 |
가이드라인
指导原则
- 기존 기능을 유지합니다 (동작 변경 없음)
- 대규모 재작성이 아닌 점진적 변경을 합니다
- 영리함보다 가독성을 우선합니다
- 팀의 패턴 친숙도를 고려합니다
- 로직이 명확하지 않은 경우에만 주석을 추가합니다
- 테스트 프로젝트가 존재하면 실행 후 회귀 없음을 확인합니다
dotnet test
- 保留原有功能(不改变代码行为)
- 采用渐进式修改而非大规模重写
- 优先考虑可读性而非技巧性
- 考虑团队对模式的熟悉程度
- 仅在逻辑不清晰时添加注释
- 若存在测试项目,执行确认无回归问题
dotnet test