--- id: wiki-2026-0508-refactoring-techniques title: Refactoring Techniques category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [] duplicate_of: none source_trust_level: A confidence_score: 0.92 tags: [uncategorized] raw_sources: [] last_reinforced: 2026-05-08 github_commit: pending inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) ๋ฆฌํŒฉํ† ๋ง(Refactoring)์€ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์™ธ๋ถ€ ๋™์ž‘์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ๋‚ด๋ถ€ ๊ตฌ์กฐ, ๊ฐ€๋…์„ฑ, ๋ชจ๋“ˆ์„ฑ์„ ๊ฐœ์„ ํ•˜๋Š” ์ •๊ตํ•œ ๊ณตํ•™์  ์ž‘์—…์ด๋‹ค. React ํ™˜๊ฒฝ์—์„œ๋Š” ๋น„๋Œ€ํ•œ ์ปดํฌ๋„ŒํŠธ ๋ถ„ํ• , ์ปค์Šคํ…€ ํ›…์„ ํ†ตํ•œ ๋กœ์ง ์ถ”์ถœ, ๊ทธ๋ฆฌ๊ณ  ๊ธฐ์ˆ  ๋ถ€์ฑ„ ์ƒํ™˜์„ ์œ„ํ•œ ์ ์ง„์  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ํ†ตํ•ด ์‹œ์Šคํ…œ์˜ ํ™•์žฅ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) 1. **์ ์ง„์  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ (Refactor, Do Not Rewrite)** - ์ „์ฒด ์‹œ์Šคํ…œ์„ ํ•œ ๋ฒˆ์— ์žฌ์ž‘์„ฑํ•˜๋Š” ์œ„ํ—˜์„ ํ”ผํ•˜๊ณ , ๊ธฐ๋Šฅ ๋‹จ์œ„๋‚˜ ๋„๋ฉ”์ธ ๋‹จ์œ„๋กœ ํ•˜๋‚˜์”ฉ ์ƒˆ๋กœ์šด ์•„ํ‚คํ…์ฒ˜๋กœ ์˜ฎ๊ธด๋‹ค. 2. **์ปค์Šคํ…€ ํ›…์„ ํ†ตํ•œ ๋กœ์ง ์ถ”์ถœ** - ๋น„๋Œ€ํ•œ ์ปดํฌ๋„ŒํŠธ ๋‚ด์˜ ๋ฐ์ดํ„ฐ ํŒจ์นญ, ํผ ์ฒ˜๋ฆฌ, ๋ณต์žกํ•œ ๊ณ„์‚ฐ ๋กœ์ง์„ ์ปค์Šคํ…€ ํ›…์œผ๋กœ ์ถ”์ถœํ•˜์—ฌ UI์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋ถ„๋ฆฌํ•œ๋‹ค. - ์ด๋ฅผ ํ†ตํ•ด ๋…๋ฆฝ์ ์ด๊ณ  ๋น ๋ฅธ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ(Unit Testing) ํ™˜๊ฒฝ์„ ํ™•๋ณดํ•œ๋‹ค. 3. **์•ˆ์ „๋ง์œผ๋กœ์„œ์˜ ํ…Œ์ŠคํŠธ ๊ตฌ์ถ•** - ๋ฆฌํŒฉํ† ๋ง ์ „ ๊ธฐ์กด ๊ธฐ๋Šฅ์˜ ๋™์ž‘์„ ๋ณด์žฅํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ˆ˜ํŠธ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜์—ฌ, ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•œ ๊ธฐ๋Šฅ ํŒŒ์†์„ ์ฆ‰๊ฐ ํƒ์ง€ํ•œ๋‹ค. 4. **๊ตฌ์กฐ์  ํ‘œ์ค€ํ™” ๋ฐ ๊ฑฐ๋ฒ„๋„Œ์Šค** - ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ•จ์ˆ˜ํ˜•์œผ๋กœ ์ „ํ™˜ํ•˜๊ณ , TypeScript๋ฅผ ๋„์ž…ํ•˜์—ฌ ์ •์  ์•ˆ์ •์„ฑ์„ ๊ฐ•ํ™”ํ•œ๋‹ค. - ESLint ๋ฐ Prettier ๋“ฑ ์ž๋™ํ™” ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ํŒ€์˜ ์ฝ”๋“œ ์ปจ๋ฒค์…˜๊ณผ ์•„ํ‚คํ…์ฒ˜ ๊ทœ์น™์„ ๊ฐ•์ œํ•œ๋‹ค. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & Updates) - **๋‹จ๊ธฐ ์ƒ์‚ฐ์„ฑ ์ €ํ•˜**: ๋ฆฌํŒฉํ† ๋ง์€ ๋‹น์žฅ์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋ณด๋‹ค ๋งŽ์€ ์‹œ๊ฐ„์„ ์†Œ์š”ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ ์ ˆํ•œ ์ผ์ • ์กฐ์œจ๊ณผ ๊ฒฝ์˜์ง„์˜ ํ•ฉ์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค. - **๊ณผ๋„ํ•œ ์ถ”์ƒํ™”์˜ ์œ„ํ—˜**: ๋ฆฌํŒฉํ† ๋ง ๊ณผ์ •์—์„œ DRY ์›์น™์—๋งŒ ์ง‘์ฐฉํ•˜์—ฌ ๋งŒ๋“  ์ง€๋‚˜์น˜๊ฒŒ ๋ณต์žกํ•œ ์ถ”์ƒํ™”๋Š” ์˜คํžˆ๋ ค ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์„ ํ•ด์น  ์ˆ˜ ์žˆ๋‹ค(KISS ์›์น™๊ณผ์˜ ์ถฉ๋Œ). - **๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ค‘๋‹จ์˜ ์œ„ํ—˜**: ๋ถ€๋ถ„์ ์ธ ๋ฆฌํŒฉํ† ๋ง์ด ์™„๋ฃŒ๋˜์ง€ ์•Š๊ณ  ์ค‘๋‹จ๋  ๊ฒฝ์šฐ, ์‹œ์Šคํ…œ ๋‚ด์— ๋‘ ๊ฐ€์ง€ ์ด์ƒ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ํŒจํ„ด์ด ํ˜ผ์žฌ๋˜์–ด ์œ ์ง€๋ณด์ˆ˜ ๋‚œ์ด๋„๊ฐ€ ์ƒ์Šนํ•  ์ˆ˜ ์žˆ๋‹ค. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) ### Related Concepts (Auto-Linked) * [[Custom_Hooks]] * [[ESLint]] * [[Engineering_Principles]] * [[Management]] * [[Prettier]] * [[Principles]] * [[React]] * [[Redux]] * [[Refactoring]] * [[Research]] * [[Software Engineering Principles]] * [[State]] * [[Technical_Debt]] * [[Testing]] ### Related Concepts - **Custom Hooks**: ๋กœ์ง ๋ถ„๋ฆฌ์˜ ๋ฌผ๋ฆฌ์  ๋‹จ์œ„ (๊ด€๊ณ„: ์‹ค์ฒœ ๋„๊ตฌ) - **Incremental Migration**: ์•ˆ์ „ํ•œ ์•„ํ‚คํ…์ฒ˜ ์ „ํ™˜ ์ „๋žต (๊ด€๊ณ„: ํ•ต์‹ฌ ๋ฐฉ๋ฒ•๋ก ) - **Unit Testing**: ๋ฆฌํŒฉํ† ๋ง์˜ ์•ˆ์ „์„ ๋ณด์žฅํ•˜๋Š” ์žฅ์น˜ (๊ด€๊ณ„: ํ•„์ˆ˜ ์„ ํ–‰ ์กฐ๊ฑด) ### Deeper Research Questions 1. ๋ฆฌํŒฉํ† ๋ง ๊ณผ์ •์—์„œ ๊ธฐ์กด์˜ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ(E2E)๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๋‚ด๋ถ€ ๋กœ์ง์„ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋กœ ๋ถ„๋ฆฌํ•ด ๋‚˜๊ฐ€๋Š” ์ตœ์ ์˜ ํ”„๋กœ์„ธ์Šค๋Š”? 2. 300์ค„ ์ด์ƒ์˜ ๊ฑฐ๋Œ€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ถ„ํ• ํ•  ๋•Œ, ์ƒํƒœ(State) ์ „๋‹ฌ์„ ์œ„ํ•ด Prop Drilling์„ ๊ฐ์ˆ˜ํ•  ๊ฒƒ์ธ๊ฐ€, ์•„๋‹ˆ๋ฉด ์ „์—ญ ์ƒํƒœ๋กœ ์Šน๊ฒฉํ•  ๊ฒƒ์ธ๊ฐ€์— ๋Œ€ํ•œ ํŒ๋‹จ ๊ธฐ์ค€์€? 3. ๋ฆฌํŒฉํ† ๋ง ์ค‘ ๋ฐœ๊ฒฌ๋œ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ์˜ '์ž ์žฌ์  ๋ฒ„๊ทธ'๋ฅผ ์ฆ‰์‹œ ์ˆ˜์ •ํ•  ๊ฒƒ์ธ๊ฐ€, ์•„๋‹ˆ๋ฉด ๋ฆฌํŒฉํ† ๋ง ์™„๋ฃŒ ํ›„ ๋ณ„๋„ ์ž‘์—…์œผ๋กœ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ธ๊ฐ€? 4. ์•„ํ‚คํ…์ฒ˜ ์บก์Аํ™”(FSD ๋“ฑ)๊ฐ€ ๋ฆฌํŒฉํ† ๋ง ์‹œ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๋ฅผ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ฐจ๋‹จํ•˜๋Š” ๊ตฌ์ฒด์ ์ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์€? 5. ์„ฑ๋Šฅ ๋ฆฌํŒฉํ† ๋ง ์‹œ, ๊ฐ€๋…์„ฑ ์ข‹์€ ์ฝ”๋“œ์™€ ๊ณ ์„ฑ๋Šฅ(๋ฉ”๋ชจ์ด์ œ์ด์…˜ ๋‚จ๋ฐœ ๋“ฑ) ์ฝ”๋“œ ์‚ฌ์ด์˜ ์ ์ ˆํ•œ ํƒ€ํ˜‘์ ์€ ์–ด๋””์ธ๊ฐ€? ### Practical Application Contexts - **๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ ํ˜„๋Œ€ํ™”**: ์˜ค๋ž˜๋œ React ํ”„๋กœ์ ํŠธ์˜ ๊ธฐ์ˆ  ์Šคํƒ(Redux -> Zustand ๋“ฑ) ๋ฐ ์ปดํฌ๋„ŒํŠธ ์Šคํƒ€์ผ ๊ฐœ์„ . - **์ง€์†์  ํ’ˆ์งˆ ๊ด€๋ฆฌ**: ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ์ „ํ›„๋กœ ๊ด€๋ จ ๋ชจ๋“ˆ์„ SRP ์›์น™์— ๋งž๊ฒŒ ์ •๋ˆํ•˜์—ฌ ๊ธฐ์ˆ  ๋ถ€์ฑ„ ๋ˆ„์  ๋ฐฉ์ง€. ### Adjacent Topics - **Software Engineering Principles (SOLID)** - **Technical Debt Management** - **Automated Governance & Linting** ## ๐Ÿค– 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: ๋ฌด์—‡์„ ํ•˜๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€ + ์ด์œ  + ๋Œ€์‹  ๋ฌด์—‡์„)*