--- id: wiki-2026-0508-refactoring title: Refactoring category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [] duplicate_of: none source_trust_level: A confidence_score: 0.92 tags: [auto-consolidated, technical-documentation] raw_sources: [] last_reinforced: 2026-05-08 github_commit: pending inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # ๋ฆฌํŒฉํ† ๋ง (Refactoring) ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) ๋ฆฌํŒฉํ† ๋ง(Refactoring)์€ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์™ธ๋ถ€ ๋™์ž‘์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ๊ฐœ์„ ํ•˜์—ฌ ์ฝ”๋“œ๋ฒ ์ด์Šค์˜ ๊ฑด๊ฐ•ํ•จ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ํ™•๋ณดํ•˜๋Š” ์ „๋ฌธ์ ์ธ ๊ฐœ๋ฐœ ๊ณผ์ •์ด๋‹ค. ๋‚ก์€ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ํ˜„๋Œ€ํ™”ํ•˜๊ณ  ์ฑ…์ž„์„ ๋ถ„๋ฆฌํ•˜๋ฉฐ, ๊ฐ•๋ ฅํ•œ ํ…Œ์ŠคํŠธ ์•ˆ์ „๋ง์„ ๊ตฌ์ถ•ํ•จ์œผ๋กœ์จ ๊ธฐ์ˆ  ๋ถ€์ฑ„๋ฅผ ์ƒํ™˜ํ•˜๊ณ  ์‹œ์Šคํ…œ์˜ ๋ณต์žก๋„๋ฅผ ์ œ์–ดํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค. --- ๋ฆฌํŒฉํ† ๋ง(Refactoring)์€ ๊ธฐ์กด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฝ”๋“œ์™€ ํŒŒ์ผ ์กฐ์ง์„ ์žฌ๊ฒ€ํ† ํ•˜์—ฌ ์™ธ๋ถ€ ๋™์ž‘์˜ ๋ณ€๊ฒฝ ์—†์ด ์ฝ”๋“œ์˜ ๋ช…ํ™•์„ฑ์„ ๋†’์ด๊ณ  ๋ณต์žก์„ฑ์„ ์ค„์ด๋ฉฐ ์ผ๊ด€๋œ ํ๋ฆ„์„ ์œ ์ง€ํ•˜๋„๋ก ๊ฐœ์„ ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค [1, 2]. ๋‹ค๋ฃจ๊ธฐ ํž˜๋“ค๊ณ  ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฑฐ๋Œ€ํ•œ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๋” ์ž‘๊ณ  ํŒŒ์•…ํ•˜๊ธฐ ์‰ฌ์šด ์กฐ๊ฐ์œผ๋กœ ๋ถ„ํ•ดํ•˜๊ณ , ๋” ๋†’์€ ์ˆ˜์ค€์˜ ์ถ”์ƒํ™”๋ฅผ ๋„์ž…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค [3]. ๊ถ๊ทน์ ์œผ๋กœ ๊ธฐ์ˆ ์  ๋ถ€์ฑ„๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ๋ณ€ํ™”ํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž์ถฐ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ํ™•์žฅ ๋ฐ ์ ์‘์‹œํ‚ค๊ธฐ ์œ„ํ•œ ํ•„์ˆ˜์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋ง ๊ด€ํ–‰์ž…๋‹ˆ๋‹ค [4, 5]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) 1. **๋ฆฌํŒฉํ† ๋ง ์ฒ ํ•™: ์ ์ง„์  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜** - ์œ„ํ—˜์ด ํฐ ์ „๋ฉด ์žฌ์ž‘์„ฑ ๋Œ€์‹ , ๊ธฐ๋Šฅ ๋‹จ์œ„๋กœ ํ•˜๋‚˜์”ฉ ์ƒˆ๋กœ์šด ์•„ํ‚คํ…์ฒ˜๋กœ ์˜ฎ๊ธฐ๋Š” ์ ์ง„์  ๋ฐฉ์‹์„ ์ทจํ•œ๋‹ค. - ์ด๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ ํ˜„๋Œ€ํ™” ์ค‘์—๋„ ์‹ ๊ทœ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์„ ์ง€์†ํ•  ์ˆ˜ ์žˆ๋‹ค. 2. **React ๋ฆฌํŒฉํ† ๋ง์˜ ํ•ต์‹ฌ: ์ปค์Šคํ…€ ํ›…** - ๋น„๋Œ€ํ•œ UI ์ปดํฌ๋„ŒํŠธ์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ถ”์ถœํ•˜์—ฌ ์ปค์Šคํ…€ ํ›…์œผ๋กœ ๋ถ„๋ฆฌํ•œ๋‹ค. - UI์™€ ๋กœ์ง์˜ ๋ถ„๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ชจ๋“ˆ์„ฑ์„ ๋†’์ด๊ณ , ๋…๋ฆฝ์ ์ด๊ณ  ๋น ๋ฅธ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ(Unit Testing) ํ™˜๊ฒฝ์„ ํ™•๋ณดํ•œ๋‹ค. 3. **์‹ค๋ฌด์  ๊ฐœ์„  ๊ธฐ๋ฒ•** - ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์˜ ํ•จ์ˆ˜ํ˜• ์ „ํ™˜, JavaScript์˜ TypeScript ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜. - ๋ถˆํ•„์š”ํ•œ `useEffect` ์ œ๊ฑฐ ๋ฐ ์„œ๋ฒ„ ์ƒํƒœ ๊ด€๋ฆฌ(TanStack Query) ๋„์ž…. - DRY(์ค‘๋ณต ์ œ๊ฑฐ) ๋ฐ YAGNI(๋ถˆํ•„์š” ๊ธฐ๋Šฅ ์ œ๊ฑฐ) ์›์น™์„ ํ†ตํ•œ ์ฝ”๋“œ ์ •๋ฆฌ. 4. **ํ‘œ์ค€ํ™” ๋ฐ ๊ฑฐ๋ฒ„๋„Œ์Šค** - CSS ์ž‘์„ฑ ๋ฐฉ์‹ ํ‘œ์ค€ํ™”, ํด๋” ๊ตฌ์กฐ(FSD ๋“ฑ) ์žฌ์ •๋ ฌ, ์ง๊ด€์  ๋„ค์ด๋ฐ ์ ์šฉ. - ESLint ๋“ฑ ์ž๋™ํ™” ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ํŒ€์˜ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๊ฐ•์ œํ•œ๋‹ค. --- - **๋ฆฌํŒฉํ† ๋ง์˜ ๋ชฉ์  ๋ฐ ๊ณ„๊ธฐ**: ๋ฆฌํŒฉํ† ๋ง์€ ๊ฐœ๋ฐœ์ž๋ฅผ ์••๋„ํ•˜๊ณ  ๋„๊ตฌ๋ฅผ ๊ณ ์žฅ ๋‚ด๋Š” ๋ฌด์งˆ์„œํ•œ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๋ฐ”๋กœ์žก๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค [6]. ํŠนํžˆ ์ฝ”๋“œ ๋‚ด์˜ ๊ฐœ๋ฐœ ๋งˆ์ฐฐ(Development friction)์ด ๋†’์€ ์˜์—ญ์ด๋‚˜ ๊ธฐ์ˆ ์  ๋ถ€์ฑ„๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์šฐ์„ ์ ์œผ๋กœ ์ง„ํ–‰๋˜๋ฉฐ [5], ์˜์กด์„ฑ์ด ์ˆœํ™˜(Cyclic) ๊ตฌ์กฐ๋กœ ๋ณ€์งˆ๋˜๊ธฐ ์ „์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ์˜์กด์„ฑ์˜ ์‹น์„ ์ž๋ฅด๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค [7]. - **์ ์ง„์ ์ด๊ณ  ๋ชฉ์ ์ด ์žˆ๋Š” ์ ‘๊ทผ (Strategic Approach)**: ๋ ˆ๊ฑฐ์‹œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด๋ฅผ ํ•œ ๋ฒˆ์— ๋ฆฌํŒฉํ† ๋งํ•  ํ•„์š”๋Š” ์—†์œผ๋ฉฐ, ์ž‘๊ณ  ๊ณ ํ†ต์ด ์‹ฌํ•œ(high-pain) ์˜์—ญ์„ ์‹๋ณ„ํ•˜์—ฌ ๋ชฉ์ ์„ ๊ฐ€์ง€๊ณ  ์ ‘๊ทผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [1, 8]. ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ DRY(Don't Repeat Yourself), ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ(SoC), SOLID ์›์น™ ๋“ฑ์„ ์ ์ง„์ ์œผ๋กœ ์ ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฒ ์ด์Šค์˜ ๊ฑด๊ฐ•์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค [1, 8]. ์ „ํ˜•์ ์ธ ๋ฆฌํŒฉํ† ๋ง ๊ตฌ์กฐ ์ค‘ ํ•˜๋‚˜๋Š” ํ•œ ๊ณณ์— ์ถ”์ƒํ™”๋ฅผ ๋„์ž…ํ•œ ๋’ค, ๊ทธ ์ฝ”๋“œ๋ฅผ ์†Œ๋น„ํ•˜๋Š” ๋ชจ๋“  ๊ณณ์„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค [9, 10]. - **์ฝ”๋“œ ์•…์ทจ(Code Smells)์™€ ๋ฆฌํŒฉํ† ๋ง ๊ธฐ๋ฒ•**: ๋ฆฌํŒฉํ† ๋ง์€ ๊ฑฐ๋Œ€ ํด๋ž˜์Šค๋‚˜ ๊ธด ๋ฉ”์„œ๋“œ ๊ฐ™์€ ๋น„๋Œ€ํ™”(Bloaters), ๊ฐ์ฒด ์ง€ํ–ฅ ๋‚จ์šฉ(Object-Orientation Abusers), ๋ณ€๊ฒฝ ๋ฐฉํ•ด ์š”์†Œ(Change Preventers), ๋ถˆํ•„์š”ํ•œ ์š”์†Œ(Dispensables - ์ค‘๋ณต ์ฝ”๋“œ, ์ฃฝ์€ ์ฝ”๋“œ ๋“ฑ), ๊ทธ๋ฆฌ๊ณ  ๊ฒฐํ•ฉ ์š”์†Œ(Couplers - ๊ธฐ๋Šฅ ํŽธ์•  ๋“ฑ)์™€ ๊ฐ™์€ '์ฝ”๋“œ ์•…์ทจ'๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์ดˆ์ ์„ ๋งž์ถฅ๋‹ˆ๋‹ค [11, 12]. ์ด๋ฅผ ์œ„ํ•ด ๋ฉ”์„œ๋“œ ๊ตฌ์„ฑ(Composing Methods), ๊ฐ์ฒด ๊ฐ„ ๊ธฐ๋Šฅ ์ด๋™, ๋ฐ์ดํ„ฐ ๊ตฌ์„ฑ, ์กฐ๊ฑด์‹ ๋‹จ์ˆœํ™” ๋“ฑ์˜ ๊ตฌ์ฒด์ ์ธ ๊ธฐ๋ฒ•์ด ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค [11, 12]. - **ํŒ€ ๋ฌธํ™” ๋ฐ ๋„๊ตฌ์˜ ํ™œ์šฉ**: ๊ฐœ๋ฐœ ํŒ€์€ ์ •๊ธฐ์ ์ธ ๋ฆฌํŒฉํ† ๋ง ์„ธ์…˜์„ ์—ด์–ด ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ณ  ์ผ๊ด€๋œ ํ๋ฆ„์„ ์œ ์ง€ํ•˜๋„๋ก ์žฅ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [2, 13]. ์ตœ๊ทผ์—๋Š” CodeScene๊ณผ ๊ฐ™์€ ํ–‰๋™ ๊ธฐ๋ฐ˜ ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ์˜ˆ์ธก ๋ชจ๋ธ์„ ํ™œ์šฉํ•˜์—ฌ ์„ ์ œ์ (Proactive)์œผ๋กœ ๋ฆฌํŒฉํ† ๋ง์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ [5], DeepSource, Greptile๊ณผ ๊ฐ™์€ AI ๋„๊ตฌ์˜ ์ž๋™ ์ˆ˜์ •(Autofix) ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์ˆ˜๋งŽ์€ ๋ฌธ์ œ๋ฅผ ๋ฆฌํŒฉํ† ๋งํ•˜๊ณ  ๋””๋ฒ„๊น… ์†๋„๋ฅผ ๋†’์ด๋Š” ๋ฐฉ์‹์ด ์ฑ„ํƒ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค [14, 15]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & Updates) - **๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ณผ๋„๊ธฐ ๋ณต์žก์„ฑ**: ๊ตฌํ˜•๊ณผ ์‹ ๊ทœ ํŒจํ„ด์ด ๊ณต์กดํ•˜๋Š” ๊ธฐ๊ฐ„ ๋™์•ˆ ์‹œ์Šคํ…œ์˜ ์ผ๊ด€์„ฑ์ด ์ผ์‹œ์ ์œผ๋กœ ๊นจ์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐœ๋ฐœ์ž์˜ ์ธ์ง€ ๋ถ€ํ•˜๊ฐ€ ์ฆ๊ฐ€ํ•œ๋‹ค. - **ํ…Œ์ŠคํŠธ ๋ถ€์žฌ์˜ ์œ„ํ—˜**: ์ถฉ๋ถ„ํ•œ ํ…Œ์ŠคํŠธ ์•ˆ์ „๋ง ์—†์ด ์ง„ํ–‰๋˜๋Š” ๋ฆฌํŒฉํ† ๋ง์€ ์˜คํžˆ๋ ค ์˜ˆ๊ธฐ์น˜ ๋ชปํ•œ ํšŒ๊ท€(Regression) ์˜ค๋ฅ˜๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค. - **๊ณผ๋„ํ•œ ์ถ”์ƒํ™”**: ์ค‘๋ณต ์ œ๊ฑฐ(DRY)์— ๋„ˆ๋ฌด ์ง‘์ฐฉํ•  ๊ฒฝ์šฐ, ์˜คํžˆ๋ ค ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์ ธ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง€๋Š” 'KISS ์›์น™ ์œ„๋ฐ˜' ์‚ฌ๋ก€๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. --- - **์„ฑ๊ธ‰ํ•œ ์ถ”์ƒํ™”์˜ ์œ„ํ—˜์„ฑ**: ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๋ ค๋Š” DRY ์›์น™ ๋“ฑ์„ ์ ์šฉํ•  ๋•Œ, ๋…ผ๋ฆฌ๊ฐ€ ๋‘ ๋ฒˆ ์ด์ƒ ๋ฐ˜๋ณต๋˜๊ธฐ ์ „์— ์„ฑ๊ธ‰ํ•˜๊ฒŒ ์ถ”์ƒํ™”๋ฅผ ์‹œ๋„ํ•˜๋ฉด ์˜คํžˆ๋ ค ๋ถˆํ•„์š”ํ•œ ๋ณต์žก์„ฑ์ด ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช…ํ™•์„ฑ์„ ํ›ผ์†ํ•˜๋ฉด์„œ๊นŒ์ง€ ๋งน๋ชฉ์ ์œผ๋กœ ์›์น™์„ ๋”ฐ๋ฅด๊ธฐ๋ณด๋‹ค๋Š” ๊ท ํ˜•์„ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [16]. - **์‹ฌ๋ฆฌ์  ๋ถ€๋‹ด๊ณผ ๋ ˆ๊ฑฐ์‹œ ๋ฐฉ์น˜**: ์•„๋ฌด๋„ ๊ฐํžˆ ๋ฆฌํŒฉํ† ๋งํ•  ์—„๋‘๋ฅผ ๋‚ด์ง€ ๋ชปํ•ด ์˜ค๋žซ๋™์•ˆ ์‚ด์•„๋‚จ์€ ๊ฐ€์žฅ ๊ธด ์ฝ”๋“œ ๋ธ”๋ก์˜ ๊ฒฝ์šฐ, ๊ฑด๋“œ๋ฆฌ๋Š” ๊ฒƒ ์ž์ฒด์— ๋Œ€ํ•œ ๋‘๋ ค์›€์œผ๋กœ ์ธํ•ด ๋ฆฌํŒฉํ† ๋ง์ด ๋ฐฉ์น˜๋˜๊ณ  ๋ณต์žกํ•œ ๋ฉ์–ด๋ฆฌ(Mess)๋กœ ๋‚จ๋Š” ๋ถ€์ž‘์šฉ์ด ํ”ํžˆ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค [17]. - **๋Œ€๊ทœ๋ชจ ์ž‘์—…์˜ ๋น„์šฉ๊ณผ ํ”ผ๋กœ๋„**: ์ „์ฒด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•œ ๋Œ€๋Œ€์ ์ธ ๋ฆฌํŒฉํ† ๋ง์ด๋‚˜ ๊ธฐ์กด ํ”„๋กœ์ ํŠธ๋ฅผ ์ธ์ˆ˜ํ•˜์—ฌ ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์ž‘์—…์€ ๋งค์šฐ ๋ฒ…์ฐฌ(Daunting) ๊ณผ์ œ์ด๋ฉฐ, ๋ฐฉ๋Œ€ํ•œ ์ฝ”๋“œ ๋ถ„์„๊ณผ ์ธ์ง€์  ํ”ผ๋กœ๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [18]. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) ### Related Concepts - **Incremental Migration**: ์•ˆ์ „ํ•œ ์•„ํ‚คํ…์ฒ˜ ์ „ํ™˜ ์ „๋žต (๊ด€๊ณ„: ํ•ต์‹ฌ ๋ฐฉ๋ฒ•๋ก ) - **Custom Hooks**: ๋กœ์ง ๋ถ„๋ฆฌ์˜ ๊ธฐ๋ณธ ๋‹จ์œ„ (๊ด€๊ณ„: ์‹ค์ฒœ ๋„๊ตฌ) - **Unit Testing**: ๋ฆฌํŒฉํ† ๋ง์˜ ์•ˆ์ •์„ฑ ๋ณด์žฅ (๊ด€๊ณ„: ํ•„์ˆ˜ ์ „์ œ ์กฐ๊ฑด) - **Feature-Sliced Design (FSD)**: ์บก์Аํ™”๋ฅผ ํ†ตํ•œ ๋ถ€์ž‘์šฉ ์ฐจ๋‹จ (๊ด€๊ณ„: ๊ตฌ์กฐ์  ๋ชฉํ‘œ) ### Deeper Research Questions 1. ๋Œ€๊ทœ๋ชจ ๋ฆฌํŒฉํ† ๋ง ์‹œ ๊ตฌ/์‹ ๊ทœ ์•„ํ‚คํ…์ฒ˜ ๊ณต์กด ๊ธฐ๊ฐ„์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•œ 'Feature Toggle' ํ™œ์šฉ ๋ฐฉ์•ˆ์€? 2. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ์ „ํ˜€ ์—†๋Š” ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ์—์„œ '์•ˆ์ „ํ•œ ๋ฆฌํŒฉํ† ๋ง'์„ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์†Œํ•œ์˜ ํ…Œ์ŠคํŠธ ์ „๋žต์€? 3. ์ˆœํ™˜ ๋ณต์žก๋„๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด๋ฌธ ๋ฆฌํŒฉํ† ๋ง(Guard Clauses ๋“ฑ)์ด React JSX ๋‚ด๋ถ€ ๊ตฌ์กฐ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์€? 4. ๋ฆฌํŒฉํ† ๋ง ์ค‘ ๋ฐœ๊ฒฌ๋œ '๊ธฐ์กด์˜ ์˜๋„๋œ ๋ฒ„๊ทธ(Legacy Bug)'๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜์  ์˜์‚ฌ๊ฒฐ์ • ๊ธฐ์ค€์€? 5. AI ๋„๊ตฌ(LLM)๋ฅผ ํ™œ์šฉํ•œ ๋Œ€๊ทœ๋ชจ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง ์‹œ, ๋กœ์ง ๋ณ€์งˆ ์—ฌ๋ถ€๋ฅผ ์ž๋™์œผ๋กœ ๊ฒ€์ฆํ•˜๋Š” ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ• ๋ฐฉ๋ฒ•์€? ### Practical Application Contexts - **๊ธฐ์ˆ  ๋ถ€์ฑ„ ์ƒํ™˜**: ์ŠคํŒŒ๊ฒŒํ‹ฐ ์ฝ”๋“œ๋กœ ๋ณ€ํ•œ ๋ ˆ๊ฑฐ์‹œ ํ”„๋กœ์ ํŠธ์˜ ๊ตฌ์กฐ ๊ฐœ์„  ๋ฐ ํ˜„๋Œ€ํ™”. - **์‹œ์Šคํ…œ ์•ˆ์ •์„ฑ ๊ฐ•ํ™”**: ์žฆ์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ชจ๋“ˆ์„ SRP ์›์น™์— ๋”ฐ๋ผ ๋ถ„ํ•ดํ•˜๊ณ  ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋ณด๊ฐ•. ### Adjacent Topics - **Technical Debt Management** - **Clean Code & Code Smells** - **SOLID Principles** --- ### Related Concepts #### [์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„ ์›์น™ ๋ฐ ์•„ํ‚คํ…์ฒ˜] - [[SOLID Principles]] - ์—ฐ๊ฒฐ ์ด์œ : ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ๋•Œ ์ ์ง„์ ์œผ๋กœ ๋ฆฌํŒฉํ† ๋ง์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„์˜ ํ•ต์‹ฌ ๊ธฐ์ค€์ด ๋ฉ๋‹ˆ๋‹ค [8]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์ด๋‚˜ ์˜์กด์„ฑ ์—ญ์ „ ์›์น™์„ ์ ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ถ„๋ฆฌํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - [[DRY (Don't Repeat Yourself)]] - ์—ฐ๊ฒฐ ์ด์œ : ๋ฆฌํŒฉํ† ๋ง ๊ณผ์ •์—์„œ ์ค‘๋ณต๋œ ์ฝ”๋“œ๋‚˜ ๋…ผ๋ฆฌ๋ฅผ ๋‹จ์ผํ™”ํ•˜์—ฌ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๋Š” ๊ธฐ๋ณธ ์›๋ฆฌ์ž…๋‹ˆ๋‹ค [1, 19]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋ฌด๋ถ„๋ณ„ํ•œ ๋ณต์‚ฌ-๋ถ™์—ฌ๋„ฃ๊ธฐ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ๊ณตํ†ต ์œ ํ‹ธ๋ฆฌํ‹ฐ๋‚˜ ๊ธฐ๋ณธ ํด๋ž˜์Šค๋กœ ์ถ”์ƒํ™”ํ•˜๋Š” ๊ธฐ๋ฒ•์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. #### [์ฝ”๋“œ ํ’ˆ์งˆ ๊ด€๋ฆฌ ๋ฐ ์‹๋ณ„ ์š”์†Œ] - [[Code Smells (์ฝ”๋“œ ์•…์ทจ)]] - ์—ฐ๊ฒฐ ์ด์œ : ๋ฆฌํŒฉํ† ๋ง์ด ํ•„์š”ํ•œ ์ง€์ ์„ ์•Œ๋ ค์ฃผ๋Š” ์ฝ”๋“œ ๋‚ด์˜ ์ž ์žฌ์  ๋ฌธ์ œ ํŒจํ„ด๋“ค(Bloaters, Couplers ๋“ฑ)์ž…๋‹ˆ๋‹ค [11, 12]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๊ธด ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก, ์ค‘๋ณต ์ฝ”๋“œ, ๊ธฐ๋Šฅ ํŽธ์•  ๋“ฑ ์–ด๋–ค ํ˜•ํƒœ์˜ ์ฝ”๋“œ๊ฐ€ ๋ฆฌํŒฉํ† ๋ง ๋Œ€์ƒ์ด ๋˜๋Š”์ง€ ๊ตฌ์ฒด์ ์œผ๋กœ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - [[Technical Debt (๊ธฐ์ˆ ์  ๋ถ€์ฑ„)]] - ์—ฐ๊ฒฐ ์ด์œ : ๋ฆฌํŒฉํ† ๋ง์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋ฐฉ์น˜ํ•  ๊ฒฝ์šฐ ์Œ“์ด๋Š” ์‹œ์Šคํ…œ์˜ ์œ ์ง€๋ณด์ˆ˜ ๋น„์šฉ๊ณผ ๊ฐœ๋ฐœ ๋งˆ์ฐฐ(friction)์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค [5, 11]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์ •๊ธฐ์ ์ธ ๋ฆฌํŒฉํ† ๋ง์ด ์™œ ๋น„์ฆˆ๋‹ˆ์Šค ๋ฏผ์ฒฉ์„ฑ๊ณผ ์‹œ์Šคํ…œ ์ˆ˜๋ช… ์—ฐ์žฅ์— ํ•„์ˆ˜์ ์ธ์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. #### [๋ถ„์„ ๋ฐ ์ง€์› ๋„๊ตฌ] - [[AI Code Review Tools]] - ์—ฐ๊ฒฐ ์ด์œ : ๋ฆฌํŒฉํ† ๋ง ๊ณผ์ •์„ ๊ฐ€์†ํ™”ํ•˜๊ณ  ์ฝ”๋“œ์˜ ๋ชจ๋“ˆ์„ฑ๊ณผ ๊ฒฐํ•ฉ๋„ ๋ฌธ์ œ๋ฅผ ์ง€์ ํ•˜๋ฉฐ, ๋•Œ๋กœ๋Š” ์ž๋™์œผ๋กœ ์ฝ”๋“œ ์ˆ˜์ •์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค [15, 20]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: Qodo, DeepSource ๋“ฑ์˜ ๋„๊ตฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณด์•ˆ์ด๋‚˜ ๊ตฌ์กฐ์  ๋ชจ๋“ˆ์„ฑ์„ ๊ฒ€ํ† ํ•˜์—ฌ ๋ฆฌํŒฉํ† ๋ง ์ง€์นจ์„ ์ œ๊ณตํ•˜๋Š”์ง€ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ### Deeper Research Questions - ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ์„ ๋ฆฌํŒฉํ† ๋งํ•  ๋•Œ, ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ•œ ๋ฒˆ์— ์žฌ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ์ ์ง„์ ์œผ๋กœ SOLID ์›์น™์„ ์ ์šฉํ•˜์—ฌ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ์ตœ์ ์˜ ์ „๋žต์€ ๋ฌด์—‡์ธ๊ฐ€? - ์ฝ”๋“œ ์•…์ทจ(Code Smells) ์ค‘ '๊ฐ์ฒด ์ง€ํ–ฅ ๋‚จ์šฉ(Object-Orientation Abusers)'๊ณผ '๊ฒฐํ•ฉ ์š”์†Œ(Couplers)'๋ฅผ ์‹๋ณ„ํ–ˆ์„ ๋•Œ, ์–ด๋–ค ๋ฆฌํŒฉํ† ๋ง ๊ธฐ๋ฒ•(์˜ˆ: ๋‹คํ˜•์„ฑ์„ ํ™œ์šฉํ•œ ์กฐ๊ฑด๋ฌธ ๋Œ€์ฒด, ํ•จ์ˆ˜ ์ด๋™ ๋“ฑ)์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํšจ๊ณผ์ ์ธ๊ฐ€? - CodeScene๊ณผ ๊ฐ™์€ ํ–‰๋™ ๊ธฐ๋ฐ˜ ์ฝ”๋“œ ๋ถ„์„(Behavioral Code Analysis) ๋„๊ตฌ์˜ ์˜ˆ์ธก ๋ชจ๋ธ์„ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ฃผ๋„์ ์œผ๋กœ ๋ฆฌํŒฉํ† ๋ง ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ ์ •ํ•˜๋Š” ์›๋ฆฌ๋Š” ๋ฌด์—‡์ธ๊ฐ€? - ์ถ”์ƒํ™”๋ฅผ ์„ ์ œ์ ์œผ๋กœ ๋„์ž…ํ•˜๋Š” ๊ฒƒ(Premature Abstraction)๊ณผ DRY ์›์น™์„ ์ง€ํ‚ค๋Š” ๊ฒƒ ์‚ฌ์ด์˜ ๊ฒฝ๊ณ„๋ฅผ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•ด์•ผ ๋ฆฌํŒฉํ† ๋ง ๊ณผ์ •์—์„œ์˜ ๋ถˆํ•„์š”ํ•œ ๋ณต์žก์„ฑ ์ฆ๊ฐ€๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€? - AI ๊ธฐ๋ฐ˜ ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ๊ฐ€ ์ œ์•ˆํ•˜๋Š” ๋ฆฌํŒฉํ† ๋ง ์ž๋™ ์ˆ˜์ •(Autofix) ๊ธฐ๋Šฅ์„ ๋Œ€๊ทœ๋ชจ ์ฝ”๋“œ๋ฒ ์ด์Šค์— ์ ์šฉํ•  ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜๋„์น˜ ์•Š์€ ๋ถ€์ˆ˜ ํšจ๊ณผ(Side-effects)๋Š” ๋ฌด์—‡์ด๋ฉฐ, ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ํ†ต์ œํ•˜๋Š”๊ฐ€? ### Practical Application Contexts - **Implementation:** ๋น„๋Œ€ํ•ด์ง„ ๋ฉ”์„œ๋“œ๋‚˜ ํด๋ž˜์Šค๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์„ ๋•Œ, '๋ฉ”์„œ๋“œ ์ถ”์ถœ(Extract Method)'์ด๋‚˜ '์กฐ๊ฑด๋ฌธ ๋ถ„ํ•ด(Decompose Conditional)' ๋“ฑ ๊ตฌ์ฒด์ ์ธ ๋ฆฌํŒฉํ† ๋ง ๊ธฐ๋ฒ•์„ ์ ์šฉํ•˜์—ฌ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ๋‹จ์ผ ์ฑ…์ž„์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค [11, 12, 21]. - **System Design:** ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ์˜์กด์„ฑ์ด ์—‰์ผœ ์ˆœํ™˜ ์ฐธ์กฐ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์ „์— ๋ฌธ์ œ์„ฑ ์˜์กด์„ฑ์„ ํŒŒ์•…ํ•˜๊ณ , ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ(SoC)๋ฅผ ๊ฐ•์ œํ•˜๋„๋ก ์•„ํ‚คํ…์ฒ˜ ์ˆ˜์ค€์˜ ๋ฆฌํŒฉํ† ๋ง์„ ๋‹จํ–‰ํ•ฉ๋‹ˆ๋‹ค [7]. - **Operation / Maintenance:** ์œ ์ง€๋ณด์ˆ˜ ํŒ€์€ ์ฝ”๋“œ์˜ ์ผ๊ด€์„ฑ๊ณผ ํ๋ฆ„์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ •๊ธฐ์ ์ธ ๋ฆฌํŒฉํ† ๋ง ์„ธ์…˜์„ ์šด์˜ํ•˜๊ณ , ๊ฐœ๋ฐœ ๊ณผ์ •์˜ ๋งˆ์ฐฐ์ด ์‹ฌํ•œ ๊ตฌ์—ญ์˜ ๊ธฐ์ˆ ์  ๋ถ€์ฑ„๋ฅผ ์ ์ง„์ ์œผ๋กœ ์ƒํ™˜ํ•ฉ๋‹ˆ๋‹ค [2, 5, 13]. - **Learning Path:** ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ํ•™์Šตํ•  ๋•Œ, ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋‘๋ ค์›Œํ•˜์—ฌ ์˜ค๋žซ๋™์•ˆ ๋ฐฉ์น˜ํ•œ ๋ณต์žกํ•œ ์ฝ”๋“œ ๋ธ”๋ก์„ ์ฐพ์•„ ๋ฆฌํŒฉํ† ๋ง ๊ณ„ํš์„ ์„ธ์›Œ๋ณด๋Š” ์—ฐ์Šต์„ ํ†ตํ•ด ์‹œ์Šคํ…œ์˜ ๊ตฌ์กฐ์™€ ์—ญ์‚ฌ์  ๋งฅ๋ฝ์„ ๊นŠ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [17]. - **My Project Relevance:** ๋‚˜์˜ ํ”„๋กœ์ ํŠธ์— ์กด์žฌํ•˜๋Š” ๋‹ค๋ฃจ๊ธฐ ํž˜๋“ค๊ณ  ๋ณต์žกํ•œ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์ฐพ์•„๋‚ด์–ด ์ฝ”๋“œ ์•…์ทจ๋ฅผ ์‹๋ณ„ํ•˜๊ณ , ์ฝ”๋“œ ๋ถ„์„ ๋ฐ AI ๋„๊ตฌ์˜ ํ”ผ๋“œ๋ฐฑ์„ ์ˆ˜์šฉํ•˜์—ฌ ๋” ์ž‘๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์ถ”์ƒํ™” ๊ณ„์ธต์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋งํ•ฉ๋‹ˆ๋‹ค [3, 20]. ### Adjacent Topics - [[๋””์ž์ธ ํŒจํ„ด (Design Patterns)]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ๋ฆฌํŒฉํ† ๋ง์„ ํ†ตํ•ด ๋„๋‹ฌํ•˜๊ณ ์ž ํ•˜๋Š” ๋ชฉํ‘œ ํ˜•ํƒœ์ธ ๊ฒ€์ฆ๋œ ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„ ๊ตฌ์กฐ(์˜ˆ: ์ƒ์„ฑ ํŒจํ„ด, ๊ตฌ์กฐ ํŒจํ„ด, ํ–‰์œ„ ํŒจํ„ด)์˜ ์ข…๋ฅ˜์™€ ํ™œ์šฉ๋ฒ•์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. - [[์ •์  ์ฝ”๋“œ ๋ถ„์„ (Static Code Analysis)]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ๋ฆฌํŒฉํ† ๋ง์ด ํ•„์š”ํ•œ ์ทจ์•ฝ์ , ๋ณต์žก๋„ ๋ฉ”ํŠธ๋ฆญ, ์ฝ”๋“œ ์•…์ทจ ๋“ฑ์„ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ์ž๋™์œผ๋กœ ๊ฒ€์ถœํ•ด๋‚ด๋Š” ๋„๊ตฌ์™€ ์›๋ฆฌ๋ฅผ ์กฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. --- *Last updated: 2026-05-02* ## ๐Ÿค– LLM ํ™œ์šฉ ํžŒํŠธ (How to Use This Knowledge) **์–ธ์ œ ์ด ์ง€์‹์„ ์“ฐ๋Š”๊ฐ€:** - *(TODO)* **์–ธ์ œ ์“ฐ๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€:** - *(TODO)* ## ๐Ÿงช ๊ฒ€์ฆ ์ƒํƒœ (Validation) - **์ •๋ณด ์ƒํƒœ:** needs_review - **์ถœ์ฒ˜ ์‹ ๋ขฐ๋„:** A - **๊ฒ€ํ†  ์ด์œ :** *(P-Reinforce Phase 1 ์ž๋™ ์ •๊ทœํ™”. ๋ณธ๋ฌธ ๊ฒ€์ฆ ํ•„์š”.)* ## ๐Ÿงฌ ์ค‘๋ณต ๊ฒ€์‚ฌ (Duplicate Check) - **๊ธฐ์กด ์œ ์‚ฌ ๋ฌธ์„œ:** *(TODO: ์ธ๋ฑ์„œ ํด๋Ÿฌ์Šคํ„ฐ ๋ฆฌํฌํŠธ ์ฐธ์กฐ)* - **์ฒ˜๋ฆฌ ๋ฐฉ์‹:** UPDATE (์ž๋™ ์ •๊ทœํ™”) - **์ฒ˜๋ฆฌ ์ด์œ :** Phase 1 ์ •๊ทœํ™” โ€” ์˜› ํ…œํ”Œ๋ฆฟ/๋ˆ„๋ฝ ํ•„๋“œ ๋ณด๊ฐ•. ## ๐Ÿ•“ ๋ณ€๊ฒฝ ์ด๋ ฅ (Changelog) | ๋‚ ์งœ | ๋ณ€๊ฒฝ ๋‚ด์šฉ | ์ฒ˜๋ฆฌ ๋ฐฉ์‹ | ์‹ ๋ขฐ๋„ | |------|-----------|-----------|--------| | 2026-05-08 | P-Reinforce Phase 1 ์ •๊ทœํ™” (frontmatter + ํ—ค๋” ํ‘œ์ค€ํ™”) | UPDATE | A | ## ๐Ÿ’ป ์ฝ”๋“œ ํŒจํ„ด (Code Patterns) **ํŒจํ„ด 1:** *(TODO: ์ด ํ”„๋กœ์ ํŠธ ์ปจ๋ฒค์…˜ ๋ฐ˜์˜ํ•œ ๊ตฌ์กฐ ์Šค์ผˆ๋ ˆํ†ค)* ```text # TODO ``` ## ๐Ÿค” ์˜์‚ฌ๊ฒฐ์ • ๊ธฐ์ค€ (Decision Criteria) **์„ ํƒ A๋ฅผ ์จ์•ผ ํ•  ๋•Œ:** - *(TODO)* **์„ ํƒ B๋ฅผ ์จ์•ผ ํ•  ๋•Œ:** - *(TODO)* **๊ธฐ๋ณธ๊ฐ’:** > *(TODO)* ## โŒ ์•ˆํ‹ฐํŒจํ„ด (Anti-Patterns) - **[์•ˆํ‹ฐํŒจํ„ด]:** *(TODO: ๋ฌด์—‡์„ ํ•˜๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€ + ์ด์œ  + ๋Œ€์‹  ๋ฌด์—‡์„)*