csharp-refactor
npx skills add https://github.com/jeongheonk/c-sharp-custom-marketplace --skill csharp-refactor
Agent 安装分布
Skill 文档
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)
| ìë° | 리í©í ë§ |
|---|---|
| SRP | Extract class, ì± ì ë¶ë¦¬ |
| OCP | Strategy/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 constructor | C# 12 |
new List<T> { ... } |
Collection expressions [...] |
C# 12 |
| ë¤ì¤ null ì²´í¬ | Pattern matching, ?., ?? |
C# 8 |
| ì¥í©í switch 문 | Switch expressions | C# 8 |
| ìë INPC 구í | [ObservableProperty] (CommunityToolkit.Mvvm) |
– |
| ë³ê²½ ê°ë¥í íë¡í¼í° (non-MVVM) | required, init |
C# 11 |
| ë¨ì ë°ì´í°ì© class | Record types | C# 9 |
| ì íµì foreach | LINQ (ì ì í ê²½ì°) | – |
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` ì¤í í íê· ììì íì¸í©ëë¤