--- id: P-REINFORCE-AUTO-AECECF category: "10_Wiki/๐Ÿ’ก Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - ์‘์ง‘๋„์™€ ๊ฒฐํ•ฉ๋„ (Cohesion and Coupling)" --- # [[แ„‹แ…ณแ†ผแ„Œแ…ตแ†ธแ„ƒแ…ฉแ„‹แ…ช แ„€แ…งแ†ฏแ„’แ…กแ†ธแ„ƒแ…ฉ (Cohesion and Coupling)|์‘์ง‘๋„์™€ ๊ฒฐํ•ฉ๋„ (Cohesion and Coupling)]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > **์‘์ง‘๋„(Cohesion)**๋Š” ๋ชจ๋“ˆ ๋‚ด๋ถ€์˜ ์š”์†Œ๋“ค์ด ํ•˜๋‚˜์˜ ๋ช…ํ™•ํ•œ ๋ชฉ์ ์„ ์œ„ํ•ด ์–ผ๋งˆ๋‚˜ ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ด€๋ จ๋˜์–ด ์žˆ๋Š”์ง€๋ฅผ ์ธก์ •ํ•˜๋Š” ์ฒ™๋„์ด๋ฉฐ, **๊ฒฐํ•ฉ๋„(Coupling)**๋Š” ๋ชจ๋“ˆ ๊ฐ„์˜ ์ƒํ˜ธ ์˜์กด์„ฑ ์ •๋„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ฒ™๋„์ด๋‹ค [1], [2], [3]. "๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ(SoC)" ์›์น™์„ ์†Œํ”„ํŠธ์›จ์–ด์— ์ ์šฉํ•˜๋Š” ํ•ต์‹ฌ ๊ณผ์ •์€ **๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ (Loose Coupling) ์‘์ง‘๋„๋ฅผ ๋†’์ด๋Š”(High Cohesion)** ๊ฒƒ์ด๋‹ค [4], [5]. ์ด๋ฅผ ๋‹ฌ์„ฑํ•จ์œผ๋กœ์จ ์‹œ์Šคํ…œ์˜ ๋ณต์žก์„ฑ์„ ์ค„์ด๊ณ  ๊ฐ€๋…์„ฑ, ์œ ์ง€๋ณด์ˆ˜์„ฑ, ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ์„ฑ์„ ๋น„์•ฝ์ ์œผ๋กœ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค [6], [7], [8]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) **1. ์‘์ง‘๋„์™€ ๊ฒฐํ•ฉ๋„์˜ ๊ฐœ๋…** * **์‘์ง‘๋„(Cohesion):** ๋ชจ๋“ˆ์ด๋‚˜ ํด๋ž˜์Šค ๋‚ด์˜ ์š”์†Œ๋“ค์ด ์ง๋ฌด์˜ ์ง‘ํ•ฉ์ด๋‚˜ ์„ธ๋ถ€์‚ฌํ•ญ ์ธก๋ฉด์—์„œ ์–ผ๋งˆ๋‚˜ ์œ ์‚ฌํ•˜๊ณ  ๋‹จ์ผํ•œ ๊ธฐ๋Šฅ์— ์ง‘์ค‘ํ•˜๊ณ  ์žˆ๋Š”์ง€๋ฅผ ์˜๋ฏธํ•œ๋‹ค [4], [2]. ์ด์ƒ์ ์ธ ํ˜•ํƒœ์ธ '๊ธฐ๋Šฅ์  ์‘์ง‘'๋ถ€ํ„ฐ ์ˆœ์ฐจ์ , ๋…ผ๋ฆฌ์ , ์‹œ๊ฐ„์ , ์ ˆ์ฐจ์ , ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ๋‚ฎ์€ ์ˆ˜์ค€์ธ '์šฐ๋ฐœ์  ์‘์ง‘'์œผ๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋‹ค [2]. * **๊ฒฐํ•ฉ๋„(Coupling):** ํ•œ ๋ชจ๋“ˆ์ด ์‹œ์Šคํ…œ์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์ด๋‚˜ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์— ์–ผ๋งˆ๋‚˜ ์˜์กดํ•˜๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค [9], [3]. ๊ฐ€์žฅ ๊ฐ•ํ•œ ํ˜•ํƒœ์ธ '๋‚ด์šฉ ๊ฒฐํ•ฉ'๋ถ€ํ„ฐ ๊ณตํ†ต, ์™ธ๋ถ€, ์ œ์–ด, ์Šคํƒฌํ”„, ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ์ด์ƒ์ ์ด๊ณ  ์•ฝํ•œ ํ˜•ํƒœ์ธ '์ž๋ฃŒ ๊ฒฐํ•ฉ' ์ˆœ์œผ๋กœ ๋‚˜๋‰œ๋‹ค [3]. **2. ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ(SoC)์™€์˜ ๊ด€๊ณ„** * ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ด๋ฃจ์–ด์กŒ๋Š”์ง€๋ฅผ ํŒ๋‹จํ•˜๋Š” **์ •๋Ÿ‰์ , ์ •์„ฑ์  ํ•ต์‹ฌ ์ฒ™๋„**๊ฐ€ ๋ฐ”๋กœ ์‘์ง‘๋„์™€ ๊ฒฐํ•ฉ๋„์ด๋‹ค [1]. * ๋‚ด๋ถ€์˜ ๊ฒฐ์†๋ ฅ(์ƒํ˜ธ์ž‘์šฉ)์€ ๊ทน๋Œ€ํ™”ํ•˜๊ณ  ์™ธ๋ถ€์˜ ๊ฐ„์„ญ์€ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์ด ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ์˜ ๊ณตํ•™์  ์ง€ํ–ฅ์ ์ด๋‹ค [10]. ์ด๋ฅผ ์ˆ˜ํ•™์  ๋น„์œ ๋กœ ํ‘œํ˜„ํ•˜๋ฉด, ์„ค๊ณ„ ํ’ˆ์งˆ์€ ๋ชจ๋“ˆ ๋‚ด๋ถ€์˜ ์ƒํ˜ธ์ž‘์šฉ ์ดํ•ฉ์„ ๋ชจ๋“ˆ ์™ธ๋ถ€์™€์˜ ์ƒํ˜ธ์ž‘์šฉ ์ดํ•ฉ์œผ๋กœ ๋‚˜๋ˆˆ ๊ฐ’์— ๋น„๋ก€ํ•œ๋‹ค [10]. * ๋งŒ์•ฝ ์ฝ”๋“œ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋…ผ๋ฆฌ๋ฅผ ํŒŒ์•…ํ•  ๋•Œ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์ด๋‚˜ ๋ชจ๋“ˆ ์‚ฌ์ด๋ฅผ ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋›ฐ์–ด๋‹ค๋‹ˆ๋ฉฐ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค๋ฉด, ์ด๋Š” ์‘์ง‘๋„๊ฐ€ ๋‚ฎ๋‹ค๋Š” ์‹ ํ˜ธ์ด๋ฉฐ ํ”ํžˆ **'์ŠคํŒŒ๊ฒŒํ‹ฐ ์ฝ”๋“œ(Spaghetti code)'**๋ผ ๋ถˆ๋ฆฌ๋Š” ๊ด€๋ฆฌ ๋ถˆ๋Šฅ ์ƒํƒœ๋ฅผ ๋‚ณ๊ฒŒ ๋œ๋‹ค [11], [12], [1]. **3. ๋†’์€ ์‘์ง‘๋„์™€ ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„์˜ ์ฃผ์š” ์ด์ ** * **๊ฐ€๋…์„ฑ ๋ฐ ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ:** ๊ฐ ๋ชจ๋“ˆ์ด ๋ช…ํ™•ํ•œ API์™€ ๋‹จ์ผ ์ฑ…์ž„์„ ๊ฐ–๊ฒŒ ๋˜์–ด ํ”„๋กœ๊ทธ๋žจ์˜ ๋™์ž‘์„ ํŒŒ์•…ํ•˜๊ธฐ ์‰ฌ์›Œ์ง„๋‹ค [6], [7]. ๋˜ํ•œ ํŠน์ • ๊ธฐ๋Šฅ์„ ์ˆ˜์ •ํ•  ๋•Œ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์ด ๊ตญ์†Œํ™”๋˜์–ด ๋ถ€์ž‘์šฉ ๋ฐœ์ƒ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค [12], [7], [8]. * **์žฌ์‚ฌ์šฉ์„ฑ ๊ทน๋Œ€ํ™”(DRY ์›์น™):** ํŠน์ • ์—ญํ• ์— ๋Œ€ํ•ด ํƒ€ ๋ชจ๋“ˆ๊ณผ ๋…๋ฆฝ๋œ ์ฝ”๋“œ๋Š” ํ˜„์žฌ ์‹œ์Šคํ…œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ๋„ ์‰ฝ๊ฒŒ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด ์ „์ฒด์ ์ธ ๊ฐœ๋ฐœ ๋น„์šฉ์„ ์ ˆ๊ฐํ•œ๋‹ค [6], [7], [8]. * **ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ ํ™•๋ณด:** ๋ชจ๋“ˆ์ด ๋‹ค๋ฅธ ๋ชจ๋“ˆ์— ๊ฑฐ์˜ ์˜์กดํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ™˜๊ฒฝ์„ ๊ตฌ๋™ํ•  ํ•„์š” ์—†์ด ๊ฐ€์งœ ๋ฐ์ดํ„ฐ(Mock, ํŽ˜์ดํฌ ๋“ฑ)๋กœ ์™ธ๋ถ€ ํ™˜๊ฒฝ์„ ๋Œ€์ฒดํ•˜์—ฌ ๊ฒฉ๋ฆฌ๋œ ๋…๋ฆฝ ํ…Œ์ŠคํŠธ(๋‹จ์œ„ ํ…Œ์ŠคํŠธ)๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง„๋‹ค [6], [12], [7], [8]. * **๋™์‹œ ๊ฐœ๋ฐœ์˜ ํšจ์œจ์„ฑ ํ–ฅ์ƒ:** ์—ญํ• ๊ณผ ๊ฒฝ๊ณ„๊ฐ€ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌ๋˜๋ฉด, ์—ฌ๋Ÿฌ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ์„œ๋กœ์˜ ์ฝ”๋“œ์— ๊ฐ„์„ญํ•˜์ง€ ์•Š๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ๋ณ‘๋ ฌ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค [6], [12]. **4. ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•œ ์ „๋žต** * ๋ชจ๋“ˆ ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ์„ ์ถ”์ƒํ™”๋œ **์ธํ„ฐํŽ˜์ด์Šค**๋ฅผ ํ†ตํ•ด ์ •์˜ํ•˜๊ฑฐ๋‚˜, ํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ์™ธ๋ถ€์—์„œ ์ฃผ์ž…๋ฐ›๋Š” **์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection)**, ์ง์ ‘ ํ˜ธ์ถœ ๋Œ€์‹  ๊ฐ„์ ‘์ ์œผ๋กœ ํ†ต์‹ ํ•˜๋Š” **์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜**๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๊ฒฐํ•ฉ๋„๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค [10], [13]. ๋˜ํ•œ ๋‚ด๋ถ€ ๊ตฌํ˜„์„ ์บก์Аํ™”ํ•˜๊ณ  ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๋Š” ๊ฒƒ ์—ญ์‹œ ์˜์กด์„ฑ์„ ๋‚ฎ์ถ”๋Š” ์ฃผ์š” ์ „๋žต์ด๋‹ค [13]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[แ„ƒแ…กแ†ซแ„‹แ…ตแ†ฏ แ„Žแ…ขแ†จแ„‹แ…ตแ†ท แ„‹แ…ฏแ†ซแ„Žแ…ตแ†จ (SRP)|๋‹จ์ผ ์ฑ…์ž„ ์›์น™ (SRP)]], [[แ„‹แ…ดแ„Œแ…ฉแ†ซแ„‰แ…ฅแ†ผ แ„Œแ…ฎแ„‹แ…ตแ†ธ (Dependency Injection)|์˜์กด์„ฑ ์ฃผ์ž… (Dependency Injection)]], [[แ„‰แ…ณแ„‘แ…กแ„€แ…ฆแ„แ…ต แ„แ…ฉแ„ƒแ…ณ (Spaghetti Code)|์ŠคํŒŒ๊ฒŒํ‹ฐ ์ฝ”๋“œ (Spaghetti Code)]] - **Projects/Contexts:** [[แ„€แ…จแ„Žแ…ณแ†ผแ„’แ…ช แ„‹แ…กแ„แ…ตแ„แ…ฆแ†จแ„Žแ…ฅ (Layered Architecture)|๊ณ„์ธตํ™” ์•„ํ‚คํ…์ฒ˜ (Layered Architecture)]], [[แ„†แ…กแ„‹แ…ตแ„แ…ณแ„…แ…ฉแ„‰แ…ฅแ„‡แ…ตแ„‰แ…ณ แ„‹แ…กแ„แ…ตแ„แ…ฆแ†จแ„Žแ…ฅ (MSA)|๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ (MSA)]] - **Contradictions/Notes:** ์„ธ๋ฐ€ํ•œ ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ๋ฅผ ํ†ตํ•œ ๊ฒฐํ•ฉ๋„ ๊ฐ์†Œ์™€ ์‘์ง‘๋„ ์ฆ๊ฐ€๊ฐ€ ํ•ญ์ƒ ๊ธ์ •์ ์ธ ๊ฒฐ๊ณผ๋งŒ์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ณผ๋„ํ•˜๊ฒŒ ์„ธ๋ฐ€ํ•œ ์ˆ˜์ค€์œผ๋กœ ๋ชจ๋“ˆ์„ ์ชผ๊ฐœ๊ณ  ๋ถ„๋ฆฌํ•˜๋ฉด, ๋ณต์žกํ•œ ์ธ๋””๋ ‰์…˜(Indirection)์ด๋‚˜ ์žฆ์€ ๊ณ„์ธต ๊ฐ„ ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜ ๋ฐ ํ†ต์‹  ๋น„์šฉ ์ฆ๊ฐ€ ๋“ฑ์œผ๋กœ ์ธํ•ด ์„ฑ๋Šฅ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ์˜คํžˆ๋ ค ์ „์ฒด ์‹œ์Šคํ…œ์˜ ์ถ”์  ๊ฐ€๋Šฅ์„ฑ์„ ๋–จ์–ด๋œจ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [14], [15], [16]. --- *Last updated: 2026-04-18* - Raw Source: 00_Raw/2026-04-20/์‘์ง‘๋„์™€ ๊ฒฐํ•ฉ๋„ (Cohesion and Coupling).md ---