csharp-code-review
15
总安装量
10
周安装量
#22198
全站排名
安装命令
npx skills add https://github.com/jeongheonk/c-sharp-custom-marketplace --skill csharp-code-review
Agent 安装分布
claude-code
9
github-copilot
8
codex
8
opencode
8
amp
6
Skill 文档
C# ì½ë 리뷰 ì¤í¬
OOP ìì¹, SOLID ìì¹, GoF ëìì¸ í¨í´, ìµì C# 기ë¥, ì±ë¥ ê´ì ìì C# ì½ë를 ì²´ê³ì ì¼ë¡ 리뷰í©ëë¤.
ì¤ì: 모ë 리뷰 ê²°ê³¼ë ë°ëì íêµì´ë¡ ìì±í©ëë¤. ì½ë ìë³ì, 기ì ì©ì´, í¨í´ ì´ë¦ ë±ì ì문 ê·¸ëë¡ ì ì§íë, ì¤ëª ·문ì ì ·ê°ì ì ë± ìì ë¶ë¶ì íêµì´ë¥¼ ì¬ì©í©ëë¤.
ì¸ì
$ARGUMENTS[0]: ëì íì¼ ëë ëë í 리 ê²½ë¡ (ì í, 미ì§ì ì ìµê·¼ ìì ë .cs íì¼ì íì)
ì¤í ë¨ê³
1ë¨ê³: 리뷰 ëì ìë³
ì¬ì©ìê° íì¼ì ì§ì íì§ ìì ê²½ì°:
- ìµê·¼ ìì ë
.csíì¼ íì¸ - ëë ì¬ì©ììê² ë¦¬ë·°í íì¼/ëë í 리 ì§ì ìì²
2ë¨ê³: ì½ë ë¶ì
ëì ì½ë를 ì½ê³ ìë ê´ì ìì ë¶ìí©ëë¤.
리뷰 ì²´í¬ë¦¬ì¤í¸
OOP 4ë ìì¹
| ìì¹ | 리뷰 í목 |
|---|---|
| 캡ìí | private íë, íë¡í¼í° ì ê·¼, 구í ì¸ë¶ì¬í ìë |
| ìì | ì ì í ìì ê³ì¸µ, ììë³´ë¤ í©ì± ì°ì |
| ë¤íì± | ì¸í°íì´ì¤/ì¶ì í´ëì¤ íì©, virtual ë©ìë ì ì ì± |
| ì¶ìí | ì ì í ì¶ìí ìì¤, ë¶íìí ì¸ë¶ì¬í ë ¸ì¶ |
SOLID ìì¹
| ìì¹ | 리뷰 í목 | ìë° ì§í |
|---|---|---|
| SRP | í´ëì¤ê° ë¨ì¼ ì± ìì ê°ëê°? | ì¬ë¬ ì´ì ë¡ í´ëì¤ê° ë³ê²½ë¨, ë©ìë ê³¼ë¤ |
| OCP | íì¥ì ì´ë ¤ìê³ ìì ì ë«íìëê°? | ì ê¸°ë¥ ì¶ê° ì 기존 ì½ë ìì íì, switch/if-else ì²´ì¸ |
| LSP | íì íì ì´ ìì íì ì ëì²´í ì ìëê°? | íì í´ëì¤ìì ìì¸ ë°ì, ë¹ ë©ìë ì¤ë²ë¼ì´ë |
| ISP | í´ë¼ì´ì¸í¸ë³ë¡ ì¸í°íì´ì¤ê° ë¶ë¦¬ëì´ ìëê°? | NotImplementedException, 미ì¬ì© ë©ìë |
| DIP | ì¶ìíì ìì¡´íëê°? | new ì§ì ì¸ì¤í´ì¤í, 구체 í´ëì¤ íì ìì¡´ |
GoF ëìì¸ í¨í´ ì ì© ê¸°í
ì½ëìì ë¤ì í¨í´ì ì ì©í ì ìë ë¶ë¶ì ìë³í©ëë¤:
ìì± í¨í´
- ë³µì¡í ê°ì²´ ìì± â Builder
- ê°ì²´ ìì± ë¡ì§ ë¶ë¦¬ â Factory Method / Abstract Factory
- ì ì ë¨ì¼ ì¸ì¤í´ì¤ â Singleton (주ì: ë¨ì© ê¸ì§)
구조 í¨í´
- í¸íëì§ ìë ì¸í°íì´ì¤ ì°ê²° â Adapter
- ëì ê¸°ë¥ ì¶ê° â Decorator
- ë³µì¡í íì ìì¤í ë¨ìí â Facade
- ê°ì²´ í¸ë¦¬ 구조 â Composite
íë í¨í´
- êµì²´ ê°ë¥í ìê³ ë¦¬ì¦ â Strategy
- ìíì ë°ë¥¸ íë ë³ê²½ â State
- ê°ì²´ ê° íµì â Observer / Mediator
- ìì² ì²ë¦¬ ì²´ì¸ â Chain of Responsibility
- ì¤í ì·¨ì/ì¬ì¤í â Command + Memento
ìµì C# ê¸°ë¥ (C# 12/13)
| ê¸°ë¥ | ê¶ì¥ ìì |
|---|---|
| Primary constructors | ê°ë¨í ì´ê¸°í를 ê°ì§ í´ëì¤ |
| Collection expressions | ë°°ì´/리ì¤í¸ ì´ê¸°í [1, 2, 3] |
| required properties | ìì±ì ìì´ íì ì´ê¸°í ë³´ì¥ |
| init-only setters | ë¶ë³ ê°ì²´ |
| record types | ê° ê¸°ë° ëë±ì±, DTO |
| Pattern matching | ë³µì¡í 조건문, íì ê²ì¬ |
| File-scoped namespaces | ë¤ì¬ì°ê¸° ì¶ì |
| Raw string literals | ì¬ë¬ ì¤ ë¬¸ìì´, JSON, SQL |
ì±ë¥ 리뷰
| ì¹´í ê³ ë¦¬ | 리뷰 í목 |
|---|---|
| ë©ëª¨ë¦¬ í ë¹ | í« ê²½ë¡ìì ë¶íìí í ë¹, Large Object Heap (>= 85KB) |
| Async/Await | ì°¨ë¨ í¸ì¶ (.Result, .Wait()), ConfigureAwait ëë½ |
| 컬ë ì | ì못ë 컬ë ì íì , LINQ ë¤ì¤ ì´ê±° |
| 문ìì´ | 루í ë´ ë¬¸ìì´ ê²°í©, StringBuilder 미ì¬ì© |
| ë°ì± | ë¶íìí ê° íì ë°ì± |
| Span/Memory | Span, Memory ìë ë²í¼ ì°ì° |
ë¹ë기 ì½ë 리뷰
-
.Resultëë.Wait()í¸ì¶ ìì (ë°ëë½ ìí) - ë¼ì´ë¸ë¬ë¦¬ ì½ëìì
ConfigureAwait(false)ì¬ì© - ì ì í CancellationToken ì í
- ìºìë ê²°ê³¼ê° ìë í« ê²½ë¡ì
ValueTaskì¬ì© - ì¤í¸ë¦¬ë° ë°ì´í°ì
IAsyncEnumerableì¬ì© - ì´ë²¤í¸ í¸ë¤ë¬ ì¸ async void ìì
ì½ë íì§ ë¦¬ë·°
- ëª ëª ê·ì¹ (PascalCase, camelCase, _privateField, Async ì 미ì¬)
- null ìì ì± (nullable reference types,
?.,??,??=) - ìì¸ ì²ë¦¬ (구체ì ìì¸,
wheníí°, ì ì í ë¡ê¹ ) - IDisposable í¨í´ ì¤ì (using 문, Dispose 구í)
- 컬ë ì ì¬ì© (ì ì í íì ì í, í¨ì¨ì ì¸ LINQ)
- ë§¤ì§ ëë²/문ìì´ì ììë¡ ì ì¸
- ì¤ë³µ ì½ë ì ê±°
- ìì ë¶íì í´ëì¤ì
sealedì ì í ì¬ì©
ë³´ì 리뷰
- ì ë ¥ ì í¨ì± ê²ì¬ (SQL Injection, XSS, ê²½ë¡ íì)
- ë¯¼ê° ë°ì´í° ì²ë¦¬ (íëì½ë©ë ë¹ë° ìì, ì ì í ìí¸í)
- ì¸ì¦/ê¶í íì¸
- ë³´ì ëì ìì± (
Randomë³´ì ì©ë ì¬ì© ê¸ì§) - XML External Entity (XXE) ë°©ì§
3ë¨ê³: 리뷰 ê²°ê³¼ ì¶ë ¥
ì¶ë ¥ íì
모ë ë´ì©ì íêµì´ë¡ ìì±í©ëë¤. ì½ë ìë³ìì 기ì ì©ì´ë ì문ì ì ì§í©ëë¤.
# ì½ë 리뷰 ê²°ê³¼
## ìì½
- íì¼: {íì¼ ê²½ë¡}
- ì¢
í© íê°: {ì°ì/ìí¸/ê°ì íì/ì¬ê°}
- 주ì ì´ì: {N}ê±´
- .NET ë²ì ì¤ì: {.NET 8/9 ê¸°ë¥ íì©ë}
## SOLID ìì¹ ë¶ì
### SRP ìë° (ì¬ê°ë: ëì/ë³´íµ/ë®ì)
- ìì¹: `ClassName.cs:line`
- 문ì : {ì¤ëª
}
- ê°ì ì: {ì½ë ìì í¬í¨}
### OCP ìë°
...
## ìµì C# ê¸°ë¥ ì ì© ê¸°í
### {기ë¥ëª
} ê¶ì¥
- ìì¹: `file.cs:line`
- íì¬: {기존 ì½ë}
- ê°ì : {ìµì C# 문ë²}
- ì´ì : {ì¤ëª
}
## ì±ë¥ ì´ì
### {ì´ì ì 목} (ì¬ê°ë: ëì/ë³´íµ/ë®ì)
- ìì¹: `file.cs:line`
- 문ì : {ìí¥ í¬í¨ ì¤ëª
}
- íì¬: {문ì ì½ë}
- ê°ì : {ìµì í ì½ë}
- í¨ê³¼: {ìì ê°ì ì }
## ë¹ë기 ì½ë ì´ì
### {ì´ì ì 목}
- ìì¹: `file.cs:line`
- 문ì : {ì¤ëª
}
- ìí: {ë°ëë½/ì±ë¥/기í}
- í´ê²°: {ì½ë ìì }
## ì ì© ê°ë¥í ëìì¸ í¨í´
### {í¨í´ëª
} í¨í´ ê¶ì¥
- íì¬ ì½ë: {문ì ì }
- ì ì© ì ì´ì : {ì¤ëª
}
- ìì ì½ë: {ê°ëµ ìì}
## ë³´ì ì°ë ¤ì¬í
### {ì´ì ì 목} (ì¬ê°ë: ì¬ê°/ëì/ë³´íµ/ë®ì)
- ìì¹: `file.cs:line`
- ì·¨ì½ì : {ì¤ëª
}
- í´ê²°: {ì½ë ìì }
## ì½ë íì§ ì´ì
### {ì´ì ì 목}
- ìì¹: `file.cs:line`
- íì¬: {ì½ë}
- ê°ì : {ì½ë}
## ì°ì ììë³ ê°ì ì¬í
1. [ì¬ê°] {ë³´ì ì´ì}
2. [ëì] {SOLID ìë°, ì±ë¥ ì´ì}
3. [ë³´íµ] {ì½ë íì§, ìµì ê¸°ë¥ ì ì©}
4. [ë®ì] {ì¤íì¼ ê°ì }
ê°ì´ëë¼ì¸
- ìì ì´ íìí ì´ìë§ ë³´ê³ í©ëë¤. ê¸ì ì í¼ëë°±ì í¬í¨íì§ ììµëë¤.
- 구체ì ì¸ ì½ë ììì í¨ê» ê°ì ìì ì ìí©ëë¤.
- ê³¼ëí ìì§ëì´ë§ì ê¶ì¥íì§ ììµëë¤.
- ë§¥ë½ì ê³ ë ¤í ì¤ì©ì ì¸ ì ìì í©ëë¤.
- ë³´ì ì´ì를 ìµì°ì ì¼ë¡ ë¤ë£¹ëë¤.
- ëì .NET ë²ì ì ê³ ë ¤íì¬ ê¸°ë¥ì ì ìí©ëë¤.
- ìµì 기ë¥ê³¼ í ì¹ìë ì¬ì´ì ê· íì ê³ ë ¤í©ëë¤.