--- id: P-REINFORCE-AUTO-FAB206 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 แ„‹แ…ฏแ†ซแ„Žแ…ตแ†จ|SOLID ์›์น™]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > SOLID ์›์น™์€ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„๋ฅผ ๋” ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ , ์œ ์—ฐํ•˜๋ฉฐ, ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์ข‹๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋œ 5๊ฐ€์ง€ ํ•ต์‹ฌ ์„ค๊ณ„ ์›์น™์˜ ์ง‘ํ•ฉ์ด๋‹ค [1]. ๋กœ๋ฒ„ํŠธ C. ๋งˆํ‹ด(Robert C. Martin)์— ์˜ํ•ด ๋Œ€์ค‘ํ™”๋œ ์ด ์›์น™๋“ค์€ ์ฝ”๋“œ์˜ ๋ถ€ํŒจ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ๊ฒฌ๊ณ ํ•œ ๊ธฐ๋ฐ˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ธ ์ง€์นจ์œผ๋กœ ์ž‘์šฉํ•œ๋‹ค [1]. ์ด ์›์น™๋“ค์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ ์šฉํ•˜๋ฉด ์‹œ์Šคํ…œ ๋‚ด ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ์˜์กด์„ฑ์ด ์ค„์–ด๋“ค์–ด ํ•œ ๋ถ€๋ถ„์˜ ๋ณ€๊ฒฝ์ด ๋‹ค๋ฅธ ๋ถ€๋ถ„์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค [1]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) **SOLID์˜ 5๊ฐ€์ง€ ํ•ต์‹ฌ ์›์น™** * **๋‹จ์ผ ์ฑ…์ž„ ์›์น™ (SRP, Single Responsibility Principle):** ํด๋ž˜์Šค๋Š” ๋‹จ ํ•˜๋‚˜์˜ ๋ณ€๊ฒฝ ์ด์œ ๋งŒ ๊ฐ€์ ธ์•ผ ํ•˜๋ฉฐ, ์ด๋Š” ์˜ค์ง ํ•˜๋‚˜์˜ ์—ญํ• (์ฑ…์ž„)๋งŒ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•œ๋‹ค [2, 3]. ์ด๋ฅผ ํ†ตํ•ด ํด๋ž˜์Šค๋ฅผ ๋” ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ณ  ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ฝ”๋“œ์˜ ๋ช…ํ™•์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ํ–ฅ์ƒ๋œ๋‹ค [3]. SRP๋Š” '๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ(SoC)' ๊ฐœ๋…์—์„œ ์ง์ ‘์ ์œผ๋กœ ํŒŒ์ƒ๋œ ์›์น™ ์ค‘ ํ•˜๋‚˜์ด๋‹ค [4]. * **๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™ (OCP, Open/Closed Principle):** ์†Œํ”„ํŠธ์›จ์–ด ์—”ํ‹ฐํ‹ฐ๋Š” ํ™•์žฅ์—๋Š” ์—ด๋ ค ์žˆ์–ด์•ผ ํ•˜์ง€๋งŒ ์ˆ˜์ •์—๋Š” ๋‹ซํ˜€ ์žˆ์–ด์•ผ ํ•œ๋‹ค [2, 3, 5]. ์ด๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋‚˜ ์ถ”์ƒ ํด๋ž˜์Šค์™€ ๊ฐ™์€ ์ถ”์ƒํ™” ๋ฐ ๋‹คํ˜•์„ฑ ๊ณผ์ •์„ ์‚ฌ์šฉํ•˜์—ฌ, ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ๋„ ์ƒˆ๋กœ์šด ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ์ƒˆ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ์œผ๋กœ์จ ๋‹ฌ์„ฑ๋œ๋‹ค [2, 3]. * **๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™ (LSP, Liskov Substitution Principle):** ํ•˜์œ„ ํƒ€์ž…(์„œ๋ธŒํด๋ž˜์Šค)์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์ •ํ™•์„ฑ์„ ํ›ผ์†ํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ๊ธฐ๋ณธ ํƒ€์ž…(๋ถ€๋ชจ ํด๋ž˜์Šค)์„ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค [2, 3]. ์ด๋Š” ํŒŒ์ƒ ํด๋ž˜์Šค๊ฐ€ ๊ธฐ๋ณธ ํด๋ž˜์Šค์˜ ๋™์ž‘์„ ์ž„์˜๋กœ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๋งค๋„๋Ÿฝ๊ฒŒ ํ˜ธํ™˜๋˜์–ด ์‹œ์Šคํ…œ์˜ ์‹ ๋ขฐ์„ฑ๊ณผ ๊ฒฌ๊ณ ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•œ๋‹ค [2, 3]. * **์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™ (ISP, Interface Segregation Principle):** ํด๋ผ์ด์–ธํŠธ๋Š” ์ž์‹ ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ธํ„ฐํŽ˜์ด์Šค์— ์˜์กดํ•˜๋„๋ก ๊ฐ•์š”๋ฐ›์•„์„œ๋Š” ์•ˆ ๋œ๋‹ค [2, 3]. ์ด๋ฅผ ์œ„ํ•ด ํ•˜๋‚˜์˜ ํฌ๊ณ  ๋ฒ”์šฉ์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ณด๋‹ค๋Š” ์ž‘๊ณ  ๊ตฌ์ฒด์ ์ด๋ฉฐ ์ „๋ฌธํ™”๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋˜๋ฉฐ, ์ด ์—ญ์‹œ '๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ(SoC)' ์›์น™์—์„œ ํŒŒ์ƒ๋˜์—ˆ๋‹ค [2-4]. * **์˜์กด์„ฑ ์—ญ์ „ ์›์น™ (DIP, Dependency Inversion Principle):** ๊ณ ์ˆ˜์ค€ ๋ชจ๋“ˆ์€ ์ €์ˆ˜์ค€ ๋ชจ๋“ˆ์— ์˜์กดํ•ด์„œ๋Š” ์•ˆ ๋˜๋ฉฐ, ์–‘์ชฝ ๋ชจ๋‘ ์ถ”์ƒํ™”(์˜ˆ: ์ธํ„ฐํŽ˜์ด์Šค)์— ์˜์กดํ•ด์•ผ ํ•œ๋‹ค [2, 3, 6]. ์ด๋Ÿฌํ•œ ์ ‘๊ทผ์€ ์ข…์ข… ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection, DI) ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„๋˜๋ฉฐ, ๋ชจ๋“ˆ์„ฑ์„ ๋†’์ด๊ณ  ์‹œ์Šคํ…œ์ด ๋ณ€ํ™”์— ์‰ฝ๊ฒŒ ์ ์‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ ๋‹ค [2, 3, 7]. **๊ตฌํ˜„ ํŒ ๋ฐ ๊ธฐ๋Œ€ ํšจ๊ณผ** * SOLID ์›์น™์„ ๋ ˆ๊ฑฐ์‹œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด์— ํ•œ ๋ฒˆ์— ์ ์šฉํ•˜๊ธฐ๋ณด๋‹ค๋Š”, ๊ฐ€์žฅ ์ ์šฉํ•˜๊ธฐ ์‰ฝ๊ณ  ์ฆ‰๊ฐ์ ์ธ ์ด์ ์„ ์ œ๊ณตํ•˜๋Š” '๋‹จ์ผ ์ฑ…์ž„ ์›์น™(SRP)'๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ์ ์ง„์ ์œผ๋กœ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ์œ ๋ฆฌํ•˜๋‹ค [7]. * ๊ตฌํ˜„ ๋ฐฉ๋ฒ•(How)๋ณด๋‹ค ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์ธ ์ธํ„ฐํŽ˜์ด์Šค(What)๋ฅผ ๋จผ์ € ์„ค๊ณ„ํ•˜๋Š” ๊ด€ํ–‰์„ ๋“ค์ด๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ OCP์™€ DIP ์›์น™์„ ๋’ท๋ฐ›์นจํ•  ์ˆ˜ ์žˆ๋‹ค [7]. * ์ด ์›์น™๋“ค์€ ๊ฐ์ฒด ์ง€ํ–ฅ ์‹œ์Šคํ…œ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ  ์ง€์†์ ์œผ๋กœ ์„ฑ์žฅํ•˜๋Š” ๋Œ€๊ทœ๋ชจ ์ฝ”๋“œ๋ฒ ์ด์Šค์— ์ด์ƒ์ ์œผ๋กœ ์ ์šฉ๋˜๋ฉฐ, ๊ฒฐํ•ฉ๋„๊ฐ€ ๋‚ฎ๊ณ  ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์œผ๋ฉฐ ์œ ์—ฐํ•œ ์ฝ”๋“œ๋ฅผ ์‚ฐ์ถœํ•˜๋Š” ํ•ต์‹ฌ ๊ธฐ๋ฐ˜์ด ๋œ๋‹ค [8]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[แ„€แ…ขแ†จแ„Žแ…ฆ แ„Œแ…ตแ„’แ…ฃแ†ผ แ„‘แ…ณแ„…แ…ฉแ„€แ…ณแ„…แ…ขแ„†แ…ตแ†ผ(OOP)|๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP)]], [[แ„€แ…ชแ†ซแ„‰แ…ตแ†ทแ„‰แ…กแ„‹แ…ด แ„‡แ…ฎแ†ซแ„…แ…ต(SoC)|๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ(SoC)]], [[แ„‹แ…ดแ„Œแ…ฉแ†ซแ„‰แ…ฅแ†ผ แ„Œแ…ฎแ„‹แ…ตแ†ธ(DI)|์˜์กด์„ฑ ์ฃผ์ž…(DI)]] - **Projects/Contexts:** [[แ„แ…ณแ†ฏแ„…แ…ตแ†ซ แ„‹แ…กแ„แ…ตแ„แ…ฆแ†จแ„Žแ…ฅ(Clean Architecture)|ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜(Clean Architecture)]], [[แ„‰แ…ฉแ„‘แ…ณแ„แ…ณแ„‹แ…ฐแ„‹แ…ฅ แ„‹แ…กแ„แ…ตแ„แ…ฆแ†จแ„Žแ…ฅ แ„‡แ…ฆแ„‰แ…ณแ„แ…ณ แ„‘แ…ณแ„…แ…ขแ†จแ„แ…ตแ„‰แ…ณ|์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ ๋ฒ ์ŠคํŠธ ํ”„๋ž™ํ‹ฐ์Šค]] - **Contradictions/Notes:** ์†Œ์Šค ์ „๋ฐ˜์— ๊ฑธ์ณ SOLID ์›์น™์€ ์ฝ”๋“œ์˜ ๋ณต์žก์„ฑ์„ ์ค„์ด๊ณ  ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๋Š” ํ•„์ˆ˜์ ์ธ ๊ธฐ๋ฒ•์œผ๋กœ ์ผ๊ด€๋˜๊ฒŒ ๊ฐ•์กฐ๋˜๊ณ  ์žˆ์œผ๋ฉฐ, ์„œ๋กœ ๋Œ€๋ฆฝํ•˜๊ฑฐ๋‚˜ ๋ชจ์ˆœ๋˜๋Š” ์ฃผ์žฅ์€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค [1, 3, 8]. --- *Last updated: 2026-04-18* - Raw Source: 00_Raw/2026-04-20/SOLID ์›์น™.md ---