--- id: wiki-2026-0508-pull-up-method title: Pull Up Method 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 --- # [[Pull Up Method]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) Pull Up Method(λ©”μ„œλ“œ 올리기)λŠ” ν˜•μ œ ν•˜μœ„ 클래슀(sibling classes)듀에 μ€‘λ³΅μœΌλ‘œ μ‘΄μž¬ν•˜λŠ” λ™μΌν•œ λ©”μ„œλ“œλ₯Ό λΆ€λͺ¨ 클래슀(superclass)둜 λŒμ–΄μ˜¬λ € μ€‘μ•™μ§‘μ€‘ν™”ν•˜λŠ” λ¦¬νŒ©ν† λ§ 기법이닀 [1], [2]. 이 기법은 μ½”λ“œ 쀑볡을 μ œκ±°ν•˜μ—¬ λΆˆν•„μš”ν•œ λ…Έλ ₯을 쀄이고, ν•œμͺ½ λ©”μ„œλ“œλ§Œ μˆ˜μ •λ˜μ–΄ λ°œμƒν•  수 μžˆλŠ” 잠재적 버그λ₯Ό μ˜ˆλ°©ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λœλ‹€ [1], [3]. μžμ‹ ν΄λž˜μŠ€λ“€μ΄ μ™„μ „νžˆ λ™μΌν•œ 본문을 κ°€μ§„ λ©”μ„œλ“œλ₯Ό κ³΅μœ ν•  λ•Œ κ°€μž₯ μ§κ΄€μ μœΌλ‘œ μ μš©ν•  수 μžˆλŠ” μΌλ°˜ν™”(Generalization) λ¦¬νŒ©ν† λ§ 쀑 ν•˜λ‚˜μ΄λ‹€ [4], [5]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **적용 동기:** μ—¬λŸ¬ ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ λ™μΌν•œ λ™μž‘μ„ μˆ˜ν–‰ν•˜λŠ” 두 λ©”μ„œλ“œκ°€ κ·ΈλŒ€λ‘œ 방치될 경우 ν–₯ν›„ λ²„κ·Έμ˜ μ˜¨μƒμ΄ 될 수 μžˆλ‹€ [3]. μ€‘λ³΅λœ λ©”μ„œλ“œκ°€ μ‘΄μž¬ν•˜λ©΄ μ½”λ“œ μˆ˜μ • μ‹œ ν•œμͺ½λ§Œ λ³€κ²½ν•˜κ³  λ‹€λ₯Έ ν•˜λ‚˜λŠ” λ³€κ²½ν•˜μ§€ μ•Šκ³  λˆ„λ½ν•  μœ„ν—˜μ΄ 있기 λ•Œλ¬Έμ— 이λ₯Ό 슈퍼클래슀둜 올렀 단일화해야 ν•œλ‹€ [3]. λ˜ν•œ, ν•˜μœ„ 클래슀의 λ©”μ„œλ“œκ°€ μƒμœ„ 클래슀의 λ©”μ„œλ“œλ₯Ό μž¬μ •μ˜(override)ν•˜λ©΄μ„œ μ‹€μ œλ‘œλŠ” λ™μΌν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” νŠΉμˆ˜ν•œ κ²½μš°μ—λ„ 이 기법이 ν•„μš”ν•˜λ‹€ [6]. * **μ‹€ν–‰ 절차:** 1. ν˜•μ œ 클래슀 κ°„μ˜ λ©”μ„œλ“œλ₯Ό κ²€μ‚¬ν•˜μ—¬ 두 λ©”μ„œλ“œμ˜ κ΅¬ν˜„μ΄ μ •λ§λ‘œ μ™„λ²½ν•˜κ²Œ λ™μΌν•œμ§€ 확인 및 λΆ„μ„ν•œλ‹€ [1], [7]. λ§Œμ•½ μ‹œκ·Έλ‹ˆμ²˜κ°€ λ‹€λ₯΄λ‹€λ©΄ μŠˆνΌν΄λž˜μŠ€μ—μ„œ μ‚¬μš©ν•  ν˜•νƒœλ‘œ μ‹œκ·Έλ‹ˆμ²˜λ₯Ό μΌμΉ˜μ‹œν‚¨λ‹€ [7]. 2. λΆ€λͺ¨ ν΄λž˜μŠ€μ— μƒˆλ‘œμš΄ λ©”μ„œλ“œλ₯Ό μƒμ„±ν•œ ν›„, 쀑볡 λ©”μ„œλ“œμ˜ 본문을 λ³΅μ‚¬ν•˜μ—¬ λΆ™μ—¬λ„£κ³  μ‘°μ •ν•œλ‹€ [1], [7]. ν•„μš”ν•˜λ‹€λ©΄ κ°€μ‹œμ„±(visibility)을 `protected`둜 λ³€κ²½ν•œλ‹€ [1]. 3. ν•˜μœ„ ν΄λž˜μŠ€λ“€μ—μ„œ μ€‘λ³΅λœ λ©”μ„œλ“œ κ΅¬ν˜„μ„ μ‚­μ œν•˜κ³  μ½”λ“œλ₯Ό 컴파일 및 ν…ŒμŠ€νŠΈν•œλ‹€ [1], [8]. 4. 였직 슈퍼클래슀의 λ©”μ„œλ“œλ§Œ 남을 λ•ŒκΉŒμ§€ λͺ¨λ“  ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ ν•΄λ‹Ή λ©”μ„œλ“œλ₯Ό μ‚­μ œν•˜κ³  ν…ŒμŠ€νŠΈν•˜λŠ” 과정을 λ°˜λ³΅ν•œλ‹€ [8]. * **κ΄€λ ¨ κΈ°λ²•μ˜ ν™œμš©:** 두 λ©”μ„œλ“œκ°€ λΉ„μŠ·ν•˜μ§€λ§Œ μ™„μ „νžˆ κ°™μ§€ μ•Šμ€ κ²½μš°μ—λŠ” 'λ©”μ„œλ“œ 올리기'λ₯Ό λ°”λ‘œ μ μš©ν•  수 μ—†λ‹€ [7]. 이럴 λ•ŒλŠ” λ¨Όμ € 'μ•Œκ³ λ¦¬μ¦˜ μ „ν™˜(Substitute Algorithm)'μ΄λ‚˜ 'ν…œν”Œλ¦Ώ λ©”μ„œλ“œ ν˜•μ„±(Form Template Method)'을 μ‚¬μš©ν•˜μ—¬ 차이점을 λΆ„λ¦¬ν•˜κ³  곡톡점을 μΆ”μΆœν•˜λŠ” μž‘μ—…μ΄ μ„ ν–‰λ˜μ–΄μ•Ό ν•œλ‹€ [7]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & Updates) * **ν•˜μœ„ 클래슀 쒅속성 문제:** 'λ©”μ„œλ“œ 올리기'λ₯Ό μ μš©ν•  λ•Œ κ°€μž₯ 닀루기 κΉŒλ‹€λ‘œμš΄ 뢀뢄은 λŒμ–΄μ˜¬λ¦¬λ €λŠ” λ©”μ„œλ“œμ˜ 본문이 μŠˆνΌν΄λž˜μŠ€μ—λŠ” μ—†κ³  ν•˜μœ„ ν΄λž˜μŠ€μ—λ§Œ μ‘΄μž¬ν•˜λŠ” κΈ°λŠ₯(λ©”μ„œλ“œλ‚˜ ν•„λ“œ)을 μ°Έμ‘°ν•˜λŠ” κ²½μš°μ΄λ‹€ [6]. * **ν•˜μœ„ λ©”μ„œλ“œ μ°Έμ‘° μ‹œ μ œμ•½:** λŒμ–΄μ˜¬λ¦° λ©”μ„œλ“œκ°€ ν•˜μœ„ ν΄λž˜μŠ€μ—λ§Œ μ‘΄μž¬ν•˜λŠ” λ‹€λ₯Έ λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜λŠ” 경우, ν•΄λ‹Ή λ©”μ„œλ“œλ„ ν•¨κ»˜ μΌλ°˜ν™”ν•˜μ—¬ λŒμ–΄μ˜¬λ¦¬κ±°λ‚˜ μŠˆνΌν΄λž˜μŠ€μ— 좔상 λ©”μ„œλ“œ(abstract method)둜 μ„ μ–Έν•΄μ•Όλ§Œ μ •μƒμ μœΌλ‘œ 컴파일되고 λ™μž‘ν•  수 μžˆλ‹€ [6], [8]. 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λ©”μ„œλ“œμ˜ μ‹œκ·Έλ‹ˆμ²˜λ₯Ό λ³€κ²½ν•˜κ±°λ‚˜ λ³„λ„μ˜ μœ„μž„(delegating) λ©”μ„œλ“œλ₯Ό λ§Œλ“€μ–΄μ•Ό ν•˜λŠ” λ³΅μž‘ν•¨μ΄ 수반될 수 μžˆλ‹€ [6]. * **ν•˜μœ„ ν•„λ“œ μ°Έμ‘° μ‹œ μ œμ•½:** λŒμ–΄μ˜¬λ¦° λ©”μ„œλ“œκ°€ ν•˜μœ„ 클래슀의 νŠΉμ • ν•„λ“œλ₯Ό μ‚¬μš©ν•˜λŠ” 경우라면, 'ν•„λ“œ 올리기(Pull Up Field)'λ‚˜ 'ν•„λ“œ μžκ°€ μΊ‘μŠν™”(Self Encapsulate Field)'λ₯Ό μ μš©ν•΄μ•Ό ν•˜λ©°, μŠˆνΌν΄λž˜μŠ€μ— μΆ”μƒν™”λœ getter λ©”μ„œλ“œλ₯Ό μ„ μ–Έν•˜μ—¬ μ ‘κ·Όν•΄μ•Ό ν•˜λŠ” ꡬ쑰적 μ œμ•½μ΄ λ”°λ₯Έλ‹€ [8]. --- *Last updated: 2026-05-03* ## πŸ€– LLM ν™œμš© 힌트 (How to Use This Knowledge) **μ–Έμ œ 이 지식을 μ“°λŠ”κ°€:** - *(TODO)* **μ–Έμ œ μ“°λ©΄ μ•ˆ λ˜λŠ”κ°€:** - *(TODO)* ## πŸ§ͺ 검증 μƒνƒœ (Validation) - **정보 μƒνƒœ:** needs_review - **좜처 신뒰도:** A - **κ²€ν†  이유:** *(P-Reinforce Phase 1 μžλ™ μ •κ·œν™”. λ³Έλ¬Έ 검증 ν•„μš”.)* ## 🧬 쀑볡 검사 (Duplicate Check) - **κΈ°μ‘΄ μœ μ‚¬ λ¬Έμ„œ:** *(TODO: μΈλ±μ„œ ν΄λŸ¬μŠ€ν„° 리포트 μ°Έμ‘°)* - **처리 방식:** UPDATE (μžλ™ μ •κ·œν™”) - **처리 이유:** Phase 1 μ •κ·œν™” β€” μ˜› ν…œν”Œλ¦Ώ/λˆ„λ½ ν•„λ“œ 보강. ## πŸ”— 지식 μ—°κ²° (Graph) - **Parent:** [[10_Wiki/Topics]] - **Related:** *(TODO: μ΅œμ†Œ 2개)* - **Opposite / Trade-off:** *(TODO)* - **Raw Source:** 직접 μž…λ ₯ ## πŸ•“ λ³€κ²½ 이λ ₯ (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: 무엇을 ν•˜λ©΄ μ•ˆ λ˜λŠ”κ°€ + 이유 + λŒ€μ‹  무엇을)*