--- id: P-REINFORCE-AUTO-D3B79D category: "10_Wiki/๐Ÿ’ก Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - SOLID ์›์น™ (SOLID Principles)" --- # [[SOLID แ„‹แ…ฏแ†ซแ„Žแ…ตแ†จ (SOLID Principles)|SOLID ์›์น™ (SOLID Principles)]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > ์ง€์‹ ์š”์•ฝ ์ •๋ณด ์ถ”์ถœ ์ค‘... ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) **SOLID์˜ 5๊ฐ€์ง€ ํ•ต์‹ฌ ์›์น™** ์†Œ์Šค ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ฅด๋ฉด SOLID๋Š” ๋‹ค์Œ ๋‹ค์„ฏ ๊ฐ€์ง€ ์›์น™์˜ ์•ฝ์ž์ž…๋‹ˆ๋‹ค [1]. * **๋‹จ์ผ ์ฑ…์ž„ ์›์น™ (Single Responsibility Principle, SRP):** ํด๋ž˜์Šค๋Š” ๋‹จ ํ•˜๋‚˜์˜ ๋ณ€๊ฒฝ ์ด์œ ๋งŒ ๊ฐ€์ ธ์•ผ ํ•˜๋ฉฐ, ์˜ค์ง ํ•˜๋‚˜์˜ ์ž‘์—…(์ฑ…์ž„)๋งŒ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [4]. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์กฐํšŒํ•˜๋Š” ํด๋ž˜์Šค๊ฐ€ ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๊ฒ€์ฆ ๊ธฐ๋Šฅ๊นŒ์ง€ ๋‹ด๋‹นํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค [4]. ์ด๋Š” ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ(SoC) ์›์น™์„ ๊ทน๋‹จ์ ์œผ๋กœ ์ ์šฉํ•œ ํ˜•ํƒœ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [5]. * **๊ฐœ๋ฐฉ/ํ์‡„ ์›์น™ (Open/Closed Principle, OCP):** ์†Œํ”„ํŠธ์›จ์–ด ์—”ํ‹ฐํ‹ฐ๋Š” ํ™•์žฅ์„ ์œ„ํ•ด์„œ๋Š” ์—ด๋ ค ์žˆ์–ด์•ผ ํ•˜์ง€๋งŒ, ์ˆ˜์ •์„ ์œ„ํ•ด์„œ๋Š” ๋‹ซํ˜€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [4, 6]. ์ธํ„ฐํŽ˜์ด์Šค๋‚˜ ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ๋„ ์ƒˆ๋กœ์šด ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ์œผ๋กœ์จ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [4]. * **๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™ (Liskov Substitution Principle, LSP):** ํ•˜์œ„ ํƒ€์ž…(Subtype)์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์ •ํ™•์„ฑ์„ ํ›ผ์†ํ•˜์ง€ ์•Š์œผ๋ฉด์„œ๋„ ๊ธฐ๋ณธ ํƒ€์ž…(Base type)์œผ๋กœ ์™„๋ฒฝํ•˜๊ฒŒ ๋Œ€์ฒด๋  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [4]. * **์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™ (Interface Segregation Principle, ISP):** ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž์‹ ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ธํ„ฐํŽ˜์ด์Šค์— ์˜์กดํ•˜๋„๋ก ๊ฐ•์š”๋ฐ›์•„์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค [4]. ํ•˜๋‚˜์˜ ํฌ๊ณ  ๋ฒ”์šฉ์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ๋ณด๋‹ค๋Š”, ๋” ์ž‘๊ณ  ๊ตฌ์ฒด์ ์ธ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [4]. * **์˜์กด์„ฑ ์—ญ์ „ ์›์น™ (Dependency Inversion Principle, DIP):** ๊ณ ์ˆ˜์ค€ ๋ชจ๋“ˆ์€ ์ €์ˆ˜์ค€ ๋ชจ๋“ˆ์— ์˜์กดํ•ด์„œ๋Š” ์•ˆ ๋˜๋ฉฐ, ๋‘ ๋ชจ๋“ˆ ๋ชจ๋‘ ์ถ”์ƒํ™”(์˜ˆ: ์ธํ„ฐํŽ˜์ด์Šค)์— ์˜์กดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [4, 7]. ์ด๋Š” ์ฃผ๋กœ ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection)์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค [4]. **๊ตฌํ˜„์„ ์œ„ํ•œ ์‹ค์šฉ์ ์ธ ์กฐ์–ธ** * **SRP๋ถ€ํ„ฐ ์ ์šฉํ•˜๊ธฐ:** ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์€ ์ ์šฉํ•˜๊ธฐ ๊ฐ€์žฅ ์‰ฌ์šฐ๋ฉฐ ์ฆ‰๊ฐ์ ์ธ ์ด์ ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์ „์— "์ด ํด๋ž˜์Šค์˜ ๋‹จ์ผ ์ฑ…์ž„์€ ๋ฌด์—‡์ธ๊ฐ€?"๋ผ๊ณ  ์Šค์Šค๋กœ ์งˆ๋ฌธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [3, 8]. * **๊ตฌํ˜„ ์ „ ์ธํ„ฐํŽ˜์ด์Šค ์„ค๊ณ„:** ์ปดํฌ๋„ŒํŠธ๊ฐ€ '์–ด๋–ป๊ฒŒ' ๋™์ž‘ํ• ์ง€๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์ „์—, '๋ฌด์—‡์„' ํ•ด์•ผ ํ•˜๋Š”์ง€(์ธํ„ฐํŽ˜์ด์Šค)๋ฅผ ๋จผ์ € ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [8]. ์ด ๋ฐฉ์‹์€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ OCP์™€ DIP ์›์น™์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค [8]. * **์˜์กด์„ฑ ์ฃผ์ž…(DI) ํ”„๋ ˆ์ž„์›Œํฌ ํ™œ์šฉ:** Spring(Java)์ด๋‚˜ ASP.NET Core์™€ ๊ฐ™์ด ๋‚ด์žฅ๋œ DI ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ๊ฒฐํ•ฉ์„ ๋ถ„๋ฆฌํ•˜๊ณ  DIP๋ฅผ ํ›จ์”ฌ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [8]. * **์ ์ง„์  ๋„์ž…:** ๊ธฐ์กด์˜ ๋ ˆ๊ฑฐ์‹œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ•œ ๋ฒˆ์— ๋ชจ๋‘ ๋ฆฌํŒฉํ† ๋งํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ SOLID ์›์น™์„ ์ ์ง„์ ์œผ๋กœ ์ ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฒ ์ด์Šค์˜ ์ƒํƒœ๋ฅผ ๊ฐœ์„ ํ•ด ๋‚˜๊ฐ€๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค [8]. **์ ์šฉ ์‹œ์˜ ๋ณต์žก๋„ ๋ฐ ์š”๊ตฌ์‚ฌํ•ญ** * SOLID ์›์น™์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ์„ค๊ณ„ ๊ทœ์œจ๊ณผ ํŒจํ„ด์„ ์š”๊ตฌํ•˜๋ฏ€๋กœ ์ค‘๊ฐ„์—์„œ ๋†’์Œ(Mediumโ€“High) ์ˆ˜์ค€์˜ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค [3]. * ์ด๋ฅผ ์›ํ™œํ•˜๊ฒŒ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ˆ™๋ จ๋œ ๊ฐœ๋ฐœ์ž์™€ ์˜์กด์„ฑ ์ฃผ์ž…(DI) ํ”„๋ ˆ์ž„์›Œํฌ ๋“ฑ์˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋’ท๋ฐ›์นจ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [3]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[แ„€แ…ขแ†จแ„Žแ…ฆ แ„Œแ…ตแ„’แ…ฃแ†ผ แ„‘แ…ณแ„…แ…ฉแ„€แ…ณแ„…แ…ขแ„†แ…ตแ†ผ (OOP)|๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (OOP)]], [[แ„€แ…ชแ†ซแ„‰แ…ตแ†ทแ„‰แ…กแ„‹แ…ด แ„‡แ…ฎแ†ซแ„…แ…ต (Separation of Concerns)|๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ (Separation of Concerns)]], [[แ„‹แ…ดแ„Œแ…ฉแ†ซแ„‰แ…ฅแ†ผ แ„Œแ…ฎแ„‹แ…ตแ†ธ (Dependency Injection)|์˜์กด์„ฑ ์ฃผ์ž… (Dependency Injection)]] - **Projects/Contexts:** [[แ„‹แ…ฆแ†ซแ„แ…ฅแ„‘แ…ณแ„…แ…กแ„‹แ…ตแ„Œแ…ณ แ„‹แ…ขแ„‘แ…ณแ†ฏแ„…แ…ตแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ แ„†แ…ตแ†พ แ„Œแ…ฅแ†ทแ„Œแ…ตแ†ซแ„Œแ…ฅแ†จ แ„…แ…ตแ„‘แ…ขแ†จแ„แ…ฉแ„…แ…ตแ†ผ|์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ์ ์ง„์  ๋ฆฌํŒฉํ† ๋ง]], [[แ„…แ…กแ„‹แ…ตแ„‡แ…ณแ„…แ…ฅแ„…แ…ต แ„†แ…ตแ†พ แ„’แ…ชแ†จแ„Œแ…กแ†ผ แ„€แ…กแ„‚แ…ณแ†ผแ„’แ…กแ†ซ แ„แ…ฉแ„ƒแ…ณแ„‡แ…ฆแ„‹แ…ตแ„‰แ…ณ|๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฒ ์ด์Šค]] - **Contradictions/Notes:** ์†Œ์Šค ๋‚ด์—์„œ ์ƒ์ถฉํ•˜๋Š” ์ฃผ์žฅ์€ ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ๋‹จ์ผ ์ฑ…์ž„ ์›์น™(SRP)์€ ์‹œ์Šคํ…œ์„ ๊ณ ์ฐจ์›์ ์ธ ์ˆ˜์ค€์—์„œ ๋ถ„๋ฆฌํ•˜๋Š” '๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ(SoC)' ์›์น™๊ณผ ์ข…์ข… ๋น„๊ต๋˜๋ฉฐ, SRP๋Š” ํด๋ž˜์Šค๋‚˜ ๋ชจ๋“ˆ์˜ '์ฑ…์ž„'์ด๋ผ๋Š” ๋” ๋ฏธ์‹œ์ ์ธ ์ˆ˜์ค€์„ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์œผ๋กœ ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค [9]. --- *Last updated: 2026-04-18* - Raw Source: 00_Raw/2026-04-20/SOLID ์›์น™ (SOLID Principles).md ---