csharp-refactor

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

C# 리팩토링 스킬

C#代码重构技能

유지보수성, 가독성, 베스트 프랙티스 준수를 위해 C# 코드를 체계적으로 리팩토링합니다.
중요: 모든 결과는 반드시 한국어로 작성합니다. 코드 식별자, 기술 용어, 패턴 이름 등은 원문 그대로 유지하되, 설명·문제점·개선안 등 서술 부분은 한국어를 사용합니다.
为提升可维护性、可读性并遵循最佳实践,对C#代码进行系统性重构。
重要:所有结果必须使用中文撰写。 代码标识符、技术术语、模式名称等保留原文形式,说明、问题点、改进方案等描述部分使用中文。

인자

参数

  • $ARGUMENTS[0]
    : 대상 파일 경로 (선택, 미지정 시 .cs 파일 탐색)
  • $ARGUMENTS[1]
    : 리팩토링 유형 (선택):
    solid
    ,
    pattern
    ,
    modern
    ,
    extract
    ,
    all
    • 미지정 시: 모든 카테고리를 스캔하고, 발견된 항목만 적용
  • $ARGUMENTS[0]
    : 目标文件路径(可选,未指定时将搜索.cs文件)
  • $ARGUMENTS[1]
    : 重构类型(可选):
    solid
    ,
    pattern
    ,
    modern
    ,
    extract
    ,
    all
    • 未指定时:扫描所有分类,仅对发现的可重构项进行处理

실행 단계

执行步骤

1단계: 대상 식별

步骤1:目标识别

파일이 지정되지 않은 경우 (
$ARGUMENTS[0]
이 비어있음):
  • 최근 수정된
    .cs
    파일 탐색
  • 사용자에게 대상 파일 선택 요청
未指定文件时(
$ARGUMENTS[0]
为空):
  • 搜索最近修改的.cs文件
  • 请求用户选择目标文件

2단계: 코드 분석

步骤2:代码分析

대상 코드를 읽고 리팩토링 기회를 분석합니다.
TargetFramework 확인:
.csproj
에서
<TargetFramework>
를 읽어 C# 버전을 파악하고, 해당 버전에서 사용 가능한 기능만 제안합니다.
读取目标代码并分析重构机会。
确认TargetFramework:从
.csproj
中读取
<TargetFramework>
以确定C#版本,仅推荐该版本支持的功能。

3단계: 리팩토링 적용

步骤3:应用重构

$ARGUMENTS[1]
기준 또는 전체 카테고리를 분석합니다:
基于
$ARGUMENTS[1]
指定的类型或全部分类进行分析。

리팩토링 카테고리

重构分类

SOLID 리팩토링 (
solid
)

SOLID重构 (
solid
)

위반리팩토링
SRPExtract class, 책임 분리
OCPStrategy/Template Method 패턴 도입
LSP상속 계층 수정, Composition 사용
ISP인터페이스를 작은 단위로 분리
DIP인터페이스 추출, 의존성 주입
违反项重构方式
SRP单一职责原则提取类、分离职责
OCP开闭原则引入Strategy/Template Method模式
LSP里氏替换原则修改继承层级、使用组合
ISP接口隔离原则将接口拆分为小粒度单元
DIP依赖倒置原则提取接口、依赖注入

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
)

现代化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
,
init
C# 11
단순 데이터용 classRecord typesC# 9
전통적 foreachLINQ (적절한 경우)-
原有语法现代化替代方案最低版本
构造函数+字段赋值Primary constructorC# 12
new List<T> { ... }
集合表达式
[...]
C# 12
多重null检查模式匹配、
?.
??
C# 8
冗长的switch语句Switch表达式C# 8
手动实现INPC
[ObservableProperty]
(CommunityToolkit.Mvvm)
-
可修改属性(非MVVM场景)
required
init
C# 11
简单数据类Record typesC# 9
传统foreachLINQ(适当时机)-

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
파일 없음
"리팩토링 대상 .cs 파일이 없습니다" 메시지 출력 후 종료
대상 파일 미발견사용자에게 파일 경로 재확인 요청
TargetFramework < net8.0C# 12 전용 기능 제안 제외, 경고 노트 출력
场景处理方式
无.cs文件输出"无可用的.cs重构目标文件"后退出
目标文件未找到请求用户重新确认文件路径
TargetFramework < net8.0排除C# 12专属功能建议,输出警告说明

가이드라인

指导原则

  • 기존 기능을 유지합니다 (동작 변경 없음)
  • 대규모 재작성이 아닌 점진적 변경을 합니다
  • 영리함보다 가독성을 우선합니다
  • 팀의 패턴 친숙도를 고려합니다
  • 로직이 명확하지 않은 경우에만 주석을 추가합니다
  • 테스트 프로젝트가 존재하면
    dotnet test
    실행 후 회귀 없음을 확인합니다
  • 保留原有功能(不改变代码行为)
  • 采用渐进式修改而非大规模重写
  • 优先考虑可读性而非技巧性
  • 考虑团队对模式的熟悉程度
  • 仅在逻辑不清晰时添加注释
  • 若存在测试项目,执行
    dotnet test
    确认无回归问题