# [[Single Responsibility Principle]] ## ๐Ÿ“Œ Brief Summary SRP(๋‹จ์ผ ์ฑ…์ž„ ์›์น™)๋Š” ์ปดํฌ๋„ŒํŠธ, ํ•จ์ˆ˜ ๋˜๋Š” ๋ชจ๋“ˆ์ด ๋‹จ ํ•˜๋‚˜์˜ ์ฑ…์ž„์ด๋‚˜ ๋ชฉ์ ๋งŒ์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„ ์›์น™์ž…๋‹ˆ๋‹ค [1-3]. ๋ณธ๋ž˜ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํด๋ž˜์Šค ์„ค๊ณ„๋ฅผ ์œ„ํ•œ ์›์น™์ด์ง€๋งŒ, React์™€ ๊ฐ™์€ ํ•จ์ˆ˜ํ˜• ์ฝ”๋“œ์—์„œ๋„ 'ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋Š” ์˜ค์ง ํ•˜๋‚˜์˜ ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค'๋Š” ๊ฐœ๋…์œผ๋กœ ๋ฒˆ์—ญ๋˜์–ด ๋„๋ฆฌ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค [3]. ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋‹จ ํ•˜๋‚˜๋ฟ์ด์–ด์•ผ ํ•˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ํ’ˆ์งˆ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ํฌ๊ฒŒ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3, 4]. ## ๐Ÿ“– Core Content * **๊ฐœ๋…๊ณผ ์ ์šฉ์˜ ํ•ต์‹ฌ:** SRP๋Š” ์žฅ๋‚œ๊ฐ ์ƒ์ž์—์„œ ๊ฐ ์žฅ๋‚œ๊ฐ์ด ์ž์‹ ๋งŒ์˜ ํŠน๋ณ„ํ•œ ์œ„์น˜๋ฅผ ๊ฐ€์ง€๋“ฏ, ์ฝ”๋“œ์˜ ๊ฐ ๋ถ€๋ถ„์ด ์˜ค์ง ํ•œ ๊ฐ€์ง€์˜ ํŠน์ •ํ•œ ์ผ๋งŒ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์ œํ•œํ•˜๋Š” ์›์น™์ž…๋‹ˆ๋‹ค [1]. React ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” ์ปดํฌ๋„ŒํŠธ๋‚˜ ํ›…(hook)์ด ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•  ์ด์œ ๊ฐ€ ๋ช…ํ™•ํžˆ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๋„๋ก ์„ค๊ณ„ํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค [2, 4]. * **์‹๋ณ„ ๋ฐฉ๋ฒ• (์ฝ”๋“œ ์Šค๋ฉœ):** ์ปดํฌ๋„ŒํŠธ๊ฐ€ 300์ค„์„ ๋„˜์–ด๊ฐ€๋Š” ๋“ฑ ๊ณผ๋„ํ•˜๊ฒŒ ์ปค์ง„๋‹ค๋ฉด, ์ด๋Š” ์ƒํƒœ ๊ด€๋ฆฌ(managing state), ๋ฐ์ดํ„ฐ ํŽ˜์นญ(fetching data), ๋ณต์žกํ•œ JSX ๋ Œ๋”๋ง ๋“ฑ ๋„ˆ๋ฌด ๋งŽ์€ ์ž‘์—…์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์‹ ํ˜ธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [4]. ๋ชจ๋“  ๊ฒƒ์„ ํ•œ ๊ณณ์—์„œ ์ฒ˜๋ฆฌํ•˜๋ ค๋Š” ๊ฑฐ๋Œ€ํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ํ”ํ•œ ์„ค๊ณ„ ํ•จ์ •์ž…๋‹ˆ๋‹ค [5]. * **React์—์„œ์˜ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•:** * **์ปดํฌ๋„ŒํŠธ ๋ถ„ํ• :** ๊ฑฐ๋Œ€ํ•œ ๋กœ์ง์„ ๊ฐ€์ง„ ํฐ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋” ์ž‘๊ณ  ๋ช…ํ™•ํ•œ ๋ชฉ์ ์„ ๊ฐ€์ง„ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, `UserDashboard` ์ปดํฌ๋„ŒํŠธ๋ฅผ `UserProfile`, `UserPosts`, `UserNotifications`๋กœ ๋‚˜๋ˆ„๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค [3, 4]. * **ํ•จ์ˆ˜ ์ถ”์ถœ:** ํŠน์ • ์ž‘์—…์„ ๋ณ„๋„์˜ ๋ฒ”์šฉ ํ•จ์ˆ˜(general-purpose functions)๋กœ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค [3]. * **Custom Hook ํ™œ์šฉ:** ์ปดํฌ๋„ŒํŠธ ๋‚ด์— ํ˜ผ์žฌ๋œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด๋‚˜ ์ƒํƒœ ๊ด€๋ฆฌ ๋กœ์ง์„ ์‚ฌ์šฉ์ž ์ •์˜ ํ›…(custom hooks)์œผ๋กœ ์ด๋™์‹œํ‚ต๋‹ˆ๋‹ค [3]. ๋ฒ”์šฉ์ ์ด๊ณ  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ๋Š” ๊ณต์œ  ํด๋”์—, ๊ธฐ๋Šฅ๋ณ„ ์ปดํฌ๋„ŒํŠธ๋Š” ํ•ด๋‹น ๊ธฐ๋Šฅ ๋””๋ ‰ํ† ๋ฆฌ์— ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค [5]. * **๊ธฐ๋Œ€ ํšจ๊ณผ:** ์ฝ”๋“œ๋ฅผ ์ž‘๊ณ  ์ง‘์ค‘๋œ ํ˜•ํƒœ์˜ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ฆฌํŒฉํ† ๋งํ•˜๋ฉด ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ์„ฑ(testability)๊ณผ ์ฝ”๋“œ์˜ ๋ช…ํ™•์„ฑ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค [4]. ๋˜ํ•œ, ๋‹จ์ผ ๋ชฉ์ ์„ ๊ฐ€์ง„ ์ž‘์€ ์ปดํฌ๋„ŒํŠธ๋“ค์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์—ฌ๋Ÿฌ ์˜์—ญ์—์„œ ์žฌ์‚ฌ์šฉํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ๊ฐ€ ํ›จ์”ฌ ์‰ฝ์Šต๋‹ˆ๋‹ค [5]. ## โš–๏ธ Trade-offs & Caveats ์†Œ์Šค์— ๋‹จ์ผ ์ฑ…์ž„ ์›์น™(SRP) ์ž์ฒด์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ๋ถ€์ž‘์šฉ์ด๋‚˜ ์ œ์•ฝ ์‚ฌํ•ญ(Trade-offs)์— ๋Œ€ํ•œ ๊ด€๋ จ ์ •๋ณด๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ SRP๊ฐ€ ํฌํ•จ๋œ ์ „์ฒด SOLID ์›์น™์— ๋Œ€ํ•ด์„œ๋Š”, ์ฝ”๋“œ๋ฅผ ๊ณ ๋„๋กœ ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์‰ฝ๊ณ  ์กฐ์ง์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ์ง€๋งŒ ์ดˆ๊ธฐ์—๋Š” ์ ์šฉํ•˜๊ธฐ ๋ณต์žกํ•˜๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ๋‹ค(May initially feel complex)๋Š” ์ ์ด ์ œ์•ฝ ์‚ฌํ•ญ์œผ๋กœ ์–ธ๊ธ‰๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค [6]. ## ๐Ÿ”— Knowledge Connections ### Related Concepts #### [์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„ ๋ฐ ๊ธฐ๋ฐ˜ ์›์น™] - [[SOLID Principles]] - ์—ฐ๊ฒฐ ์ด์œ : SRP๋Š” SOLID๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” 5๊ฐ€์ง€ ์„ค๊ณ„ ์›์น™ ์ค‘ ์ฒซ ๋ฒˆ์งธ ํ•ต์‹ฌ ์š”์†Œ์ž…๋‹ˆ๋‹ค [7]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์‹œ์ž‘๋œ ์ด ์›์น™๋“ค์ด ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ตฌ์กฐํ™”์™€ ํ™•์žฅ์„ฑ์— ์–ด๋–ป๊ฒŒ ์ข…ํ•ฉ์ ์œผ๋กœ ๊ธฐ์—ฌํ•˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [8]. - [[Clean Code]] - ์—ฐ๊ฒฐ ์ด์œ : ์ฝ๊ธฐ ์‰ฝ๊ณ  ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์›์น™์œผ๋กœ, ์ฝ”๋“œ๋ฅผ ๋ช…ํ™•ํ•˜๊ณ  ๋‹จ์ˆœํ•˜๊ฒŒ ์ž‘์„ฑํ•  ๊ฒƒ์„ ๊ฐ•์กฐํ•˜๋Š” SRP์™€ ๊ธด๋ฐ€ํ•˜๊ฒŒ ์—ฐ๊ด€๋ฉ๋‹ˆ๋‹ค [2, 9]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋‹จ์ผ ์ฑ…์ž„์„ ์ง€ํ‚ค๋ฉด์„œ๋„ ์–ด๋–ป๊ฒŒ ๋ณ€์ˆ˜๋ช…, ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ ๋“ฑ์„ ์ฝ๊ธฐ ์‰ฝ๊ฒŒ ๋‹ค๋“ฌ์„ ์ˆ˜ ์žˆ๋Š”์ง€ ์‹ค์ฒœ์  ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [9]. #### [React ํŒจํ„ด ๋ฐ ํ™œ์šฉ ๋„๊ตฌ] - [[Custom Hooks]] - ์—ฐ๊ฒฐ ์ด์œ : React์—์„œ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ์ฑ…์ž„์„ ๊ฐ€์งˆ ๋•Œ ๋ฐ์ดํ„ฐ ํŽ˜์นญ์ด๋‚˜ ์ƒํƒœ ๊ด€๋ฆฌ ๋กœ์ง์„ UI๋กœ๋ถ€ํ„ฐ ๋ถ„๋ฆฌํ•ด๋‚ด๋Š” ํ•ต์‹ฌ ์ˆ˜๋‹จ์ž…๋‹ˆ๋‹ค [3]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: SRP๋ฅผ ์‹ค์ œ React ํ™˜๊ฒฝ์—์„œ ์ ์šฉํ•˜์—ฌ UI ๋ Œ๋”๋ง ๋กœ์ง๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜๋Š” ๊ตฌํ˜„ ํŒจํ„ด์„ ๊นŠ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3]. - [[Component Composition]] - ์—ฐ๊ฒฐ ์ด์œ : ํ•˜๋‚˜์˜ ํฐ ์—ญํ• ์„ ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…๋ฆฝ๋œ ์ฑ…์ž„์„ ๊ฐ€์ง„ ์„œ๋ธŒ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ถ„ํ• ํ•˜๊ณ  ์กฐํ•ฉํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค [4, 5]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: OCP(๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™)์™€ SRP๋ฅผ ๋™์‹œ์— ๋งŒ์กฑ์‹œํ‚ค๋ฉฐ, ๋ ˆ๊ณ  ๋ธ”๋ก์ฒ˜๋Ÿผ ์œ ์—ฐํ•˜๊ฒŒ UI๋ฅผ ์กฐ๋ฆฝํ•˜๊ณ  ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [2, 4]. ### Deeper Research Questions - ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์—ฌ๋Ÿฌ ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€(์˜ˆ: 300์ค„ ์ดˆ๊ณผ) ํŒ๋‹จํ•  ๋•Œ, '๋‹จ์ผ ์ฑ…์ž„'์˜ ๊ฒฝ๊ณ„(Boundary)๋ฅผ ์–ด๋–ป๊ฒŒ ์ •์˜ํ•˜๊ณ  ํ‰๊ฐ€ํ•ด์•ผ ํ•˜๋Š”๊ฐ€? - React ์ปดํฌ๋„ŒํŠธ์—์„œ ์ƒํƒœ ๊ด€๋ฆฌ ์ฑ…์ž„์„ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด Custom Hook์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ์™ธ์—, ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Zustand, Context API ๋“ฑ)๋ฅผ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์ด SRP ๊ด€์ ์—์„œ ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”๊ฐ€? - Feature-Sliced Design (FSD)์™€ ๊ฐ™์€ ๋ชจ๋“ˆํ˜• ์•„ํ‚คํ…์ฒ˜์—์„œ SRP๋Š” ๊ฐ Layer(๊ณต์œ , ์—”ํ‹ฐํ‹ฐ, ๊ธฐ๋Šฅ ๋“ฑ)์— ์–ด๋–ป๊ฒŒ ์ ์šฉ๋˜๋ฉฐ, ๋ชจ๋“ˆ ๊ฐ„ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๋Š” ๋ฐ ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š”๊ฐ€? - ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ๊ฐ•ํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋œ ๊ฑฐ๋Œ€ํ•œ ๋ ˆ๊ฑฐ์‹œ React ์ปดํฌ๋„ŒํŠธ๋ฅผ SRP ์›์น™์— ๋”ฐ๋ผ ๋ถ„๋ฆฌํ•  ๋•Œ, ํšŒ๊ท€(Regression)๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์žฅ ์•ˆ์ „ํ•œ ๋ฆฌํŒฉํ† ๋ง ๋ฐ ํ…Œ์ŠคํŠธ ์ „๋žต์€ ๋ฌด์—‡์ธ๊ฐ€? - SRP๋ฅผ ๊ทน๋‹จ์ ์œผ๋กœ ์ ์šฉํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ์™€ ํ›…์„ ๋„ˆ๋ฌด ์ž˜๊ฒŒ ๋ถ„ํ•ดํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ ๊ตฌ์กฐ ๋ฐ Props ์ „๋‹ฌ์˜ ๋ณต์žก์„ฑ์€ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€? ### Practical Application Contexts - **Implementation:** React ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์ฝ”๋“œ ๋ผ์ธ ์ˆ˜๊ฐ€ ์ง€๋‚˜์น˜๊ฒŒ ๊ธธ์–ด์ง€๊ฑฐ๋‚˜(์˜ˆ: 300์ค„ ์ดˆ๊ณผ) ๋กœ์ง์ด ๋ณต์žกํ•ด์ง€๋ฉด, ๋ฐ์ดํ„ฐ ํŽ˜์นญ, ์ƒํƒœ ๊ด€๋ฆฌ ๋กœ์ง์„ Custom Hooks๋กœ ์ถ”์ถœํ•˜๊ณ  UI ๋ Œ๋”๋ง์„ ์ชผ๊ฐœ์–ด ๋‹จ์ผ ์ฑ…์ž„๋งŒ ๊ฐ–๋„๋ก ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค [3, 4]. - **System Design:** ํด๋” ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ชจ๋“  ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๋‘์ง€ ์•Š๊ณ , ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ๋Š” ๊ณต์œ (Shared) ํด๋”์—, ํŠน์ • ๊ธฐ๋Šฅ์— ์ข…์†๋œ ์ปดํฌ๋„ŒํŠธ๋Š” Feature ๋””๋ ‰ํ† ๋ฆฌ์— ๋ช…ํ™•ํžˆ ๊ฒฉ๋ฆฌํ•˜์—ฌ ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค [5]. - **Operation / Maintenance:** ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ฝ”๋“œ๊ฐ€ ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์— ๋”ฐ๋ผ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๋‹ค๋ฉด, ๋ฌธ์ œ๊ฐ€ UI ๋ Œ๋”๋ง์— ์žˆ๋Š”์ง€ ์ƒํƒœ ๊ด€๋ฆฌ์— ์žˆ๋Š”์ง€ ์ถ”์ ํ•˜๊ธฐ ์‰ฌ์›Œ์ ธ ์œ ์ง€๋ณด์ˆ˜ ์†๋„์™€ ์ •ํ™•์„ฑ์„ ํฌ๊ฒŒ ๋†’์ž…๋‹ˆ๋‹ค [4-6]. - **Learning Path:** React์˜ ๊ธฐ๋ณธ ๊ฐœ๋…(State, Props, JSX)์„ ์ตํžŒ ํ›„, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง์— ๋”ฐ๋ผ ๋ฐœ์ƒํ•˜๋Š” ์ŠคํŒŒ๊ฒŒํ‹ฐ ์ฝ”๋“œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Clean Code์™€ SOLID ์›์น™(ํŠนํžˆ SRP)์„ ํ•™์Šตํ•˜๊ณ  ์ด๋ฅผ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง์— ์ ์šฉํ•ด ๋ณด๋Š” ๋ฐฉ์‹์œผ๋กœ ๋‚˜์•„๊ฐ‘๋‹ˆ๋‹ค [7-9]. - **My Project Relevance:** ๊ฑฐ๋Œ€ํ•œ ๋Œ€์‹œ๋ณด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ์„ ๊ตฌ์ถ•ํ•  ๋•Œ, ์ „์ฒด๋ฅผ ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€๋‚˜ ์ปดํฌ๋„ŒํŠธ๋กœ ์งœ์ง€ ์•Š๊ณ  `UserProfile`, `UserPosts`, `UserNotifications` ๋“ฑ ๋…๋ฆฝ์ ์ธ ๋ชฉ์ ์„ ๊ฐ€์ง„ ์ปดํฌ๋„ŒํŠธ๋“ค๋กœ ์„ธ๋ถ„ํ™”ํ•˜์—ฌ ํ…Œ์ŠคํŠธ์™€ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค [4]. ### Adjacent Topics - [[DRY (Don't Repeat Yourself)]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ์ฝ”๋“œ๋ฅผ ๋‹จ์ผ ์ฑ…์ž„์œผ๋กœ ์ชผ๊ฐ  ํ›„, ์ค‘๋ณต๋˜๋Š” ๋กœ์ง(์˜ˆ: ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ํŽ˜์นญ ๋ฐฉ์‹ ๋“ฑ)์„ ์‹๋ณ„ํ•˜๊ณ  ์ด๋ฅผ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜๋‚˜ ํ›…์œผ๋กœ ํ†ตํ•ฉํ•˜๋Š” ์ตœ์ ํ™” ๋ฐฉํ–ฅ์œผ๋กœ ์ดํ•ด๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [9, 10]. - [[KISS (Keep It Simple, Stupid)]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์„ ์ง€ํ‚ค๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ณผ์ •์—์„œ, ์ง€๋‚˜์นœ ์ถ”์ƒํ™”๋กœ ์ธํ•ด ๊ตฌ์กฐ๊ฐ€ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋ณต์žกํ•ด์ง€์ง€ ์•Š๋„๋ก(๋‹จ์ˆœํ•จ์„ ์œ ์ง€ํ•˜๋„๋ก) ๋•๋Š” ๋ณด์™„์ ์ธ ์„ค๊ณ„ ์›์น™์œผ๋กœ ํ•™์Šต์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [9, 10]. --- *Last updated: 2026-04-30*