--- id: wiki-2026-0508-single-responsibility-principle- title: Single Responsibility Principle (SRP) category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [P-REINFORCE-AUTO-WIKI-ARCH-002] duplicate_of: none source_trust_level: A confidence_score: 0.95 tags: [architecture, srp, cohesion, refactoring, code-review, p-reinforce] raw_sources: [] last_reinforced: 2026-05-01 github_commit: pending inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # [[Single Responsibility Principle (SRP)]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > "ํ•˜๋‚˜์˜ ๋ชจ๋“ˆ์€ ์˜ค์ง ํ•˜๋‚˜์˜ ๋ณ€๊ฒฝ ์ด์œ (Reason to change)๋งŒ์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค: ์ฝ”๋“œ์˜ ์‘์ง‘๋„๋ฅผ ๋†’์ด๊ณ  ๋ณต์žก์„ฑ์„ ๋ถ„์‚ฐํ•˜์—ฌ, ๋ฒ„๊ทธ ์ˆ˜์ •๊ณผ ๊ธฐ๋Šฅ ํ™•์žฅ์ด ๋‹ค๋ฅธ ์˜์—ญ์— ๋ฏธ์น˜๋Š” ๋ถ€์ž‘์šฉ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ์„ค๊ณ„์˜ ๊ธฐ์ดˆ." ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) SRP๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„์˜ ์ฒซ ๋ฒˆ์งธ ๋‹จ์ถ”์ด์ž ๊ฐ€์žฅ ๋ณดํŽธ์ ์ธ ๋ฆฌ๋ทฐ ๊ธฐ์ค€์ž…๋‹ˆ๋‹ค. 1. **๋‹จ์ผ ์ฑ…์ž„์˜ ๊ธฐ์ค€**: * ํด๋ž˜์Šค๋‚˜ ํ•จ์ˆ˜๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” '์ผ(Task)'์ด ์•„๋‹ˆ๋ผ, ๊ทธ ์ฝ”๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ณ€๊ฒฝํ•˜๋Š” '์ฃผ์ฒด(Actor)'๊ฐ€ ๋ˆ„๊ตฌ์ธ๊ฐ€์— ์ง‘์ค‘ํ•ฉ๋‹ˆ๋‹ค. * ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘๊ทผ, UI ๋ Œ๋”๋ง ๋“ฑ์ด ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ์„ž์—ฌ ์žˆ๋‹ค๋ฉด ์ด๋Š” ๋ช…๋ฐฑํ•œ SRP ์œ„๋ฐ˜์ž…๋‹ˆ๋‹ค. 2. **์ฝ”๋“œ ๋ฆฌ๋ทฐ์˜ ํ•ต์‹ฌ ํ•„ํ„ฐ**: * ๋ฆฌ๋ทฐ์–ด๋Š” ๊ฑฐ๋Œ€ํ•œ ํ•จ์ˆ˜๋‚˜ ํด๋ž˜์Šค๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์„ ๋•Œ ์ด๋ฅผ ๋…ผ๋ฆฌ์  ๋‹จ์œ„๋กœ ์ชผ๊ฐœ๋„๋ก ๊ถŒ๊ณ ํ•ฉ๋‹ˆ๋‹ค. * ๋ชจ๋“ˆ์ด ์ž‘์•„์งˆ์ˆ˜๋ก ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์‰ฌ์›Œ์ง€๋ฉฐ, ํŠน์ • ๊ธฐ๋Šฅ๋งŒ ๋–ผ์–ด๋‚ด์–ด ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์šฉ์ดํ•ด์ง‘๋‹ˆ๋‹ค. 3. **๊ฒฐํ•ฉ๋„์™€ ์‘์ง‘๋„**: * ์ฑ…์ž„์ด ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌ๋œ ์ฝ”๋“œ๋Š” ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„(Low Coupling)์™€ ๋†’์€ ์‘์ง‘๋„(High Cohesion)๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋˜์–ด, ์ „์ฒด ์‹œ์Šคํ…œ์˜ ์œ ์ง€๋ณด์ˆ˜ ๋น„์šฉ์„ ๋‚ฎ์ถฅ๋‹ˆ๋‹ค. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & Updates) - **๊ณผ๋„ํ•œ ํŒŒํŽธํ™”**: SRP๋ฅผ ๊ทน๋‹จ์ ์œผ๋กœ ์ ์šฉํ•  ๊ฒฝ์šฐ ํด๋ž˜์Šค์™€ ํŒŒ์ผ ์ˆ˜๊ฐ€ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜์—ฌ ์ „์ฒด ์‹œ์Šคํ…œ์˜ ๊ฐ€๋…์„ฑ์„ ํ•ด์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. '๋…ผ๋ฆฌ์  ์—ฐ๊ด€์„ฑ'์ด ๋†’์€ ์ฝ”๋“œ๋“ค์€ ์ ์ ˆํ•œ ์ˆ˜์ค€์—์„œ ํ•จ๊ป˜ ์œ ์ง€ํ•˜๋Š” ์‹ค์šฉ์  ๊ท ํ˜•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. - **์•„ํ‚คํ…์ฒ˜์  ๋ถ€์ฑ„**: ์ดˆ๊ธฐ ์„ค๊ณ„ ์‹œ SRP๋ฅผ ๋ฌด์‹œํ•˜๋ฉด ์‹œ๊ฐ„์ด ํ๋ฅผ์ˆ˜๋ก '์‹ (God) ๊ฐ์ฒด'๊ฐ€ ํƒ„์ƒํ•˜๋ฉฐ, ์ด๋Š” ๋ฆฌํŒฉํ† ๋ง ๋น„์šฉ์„ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ์ฃผ์š” ์›์ธ์ด ๋ฉ๋‹ˆ๋‹ค. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - [[SOLID Principles]]: 5๋Œ€ ์›์น™์˜ ์‹œ์ž‘์ . - [[Testability]]: ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์ข‹์€ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ์ง์ ‘์  ์›์ธ. - [[Refactoring]]: SRP ์œ„๋ฐ˜ ์‹œ ๋ฆฌ๋ทฐ์–ด๊ฐ€ ๋‚ด๋ฆฌ๋Š” ํ•ต์‹ฌ ์ฒ˜๋ฐฉ. - [[Clean Architecture]]: ์ฑ…์ž„์„ ๊ณ„์ธต๋ณ„๋กœ ๊ฒฉ๋ฆฌํ•˜๋Š” ๊ฑฐ์‹œ์  ๊ตฌ์กฐ. - [[Code Readability]]: ๋‹จ์ˆœํ•ด์ง„ ์ฝ”๋“œ๊ฐ€ ๊ฐ€์ ธ์˜ค๋Š” ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ. --- ## ๐Ÿค– 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: ๋ฌด์—‡์„ ํ•˜๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€ + ์ด์œ  + ๋Œ€์‹  ๋ฌด์—‡์„)*