--- id: P-REINFORCE-AUTO-SWDP-001 category: "[[10_Wiki/πŸ’‘ Topics/AI]]" confidence_score: 0.98 tags: [auto-reinforced, software-engineering, design-principles, clean-code, architecture] last_reinforced: 2026-04-20 --- # [[Software-Design-Principles]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > "μ½”λ“œλ₯Ό 예술둜 λ°”κΎΈλŠ” 섀계 μ² ν•™: μ‹œκ°„μ΄ μ§€λ‚ μˆ˜λ‘ μ©μ–΄κ°€λŠ” μ½”λ“œ(Code Rot)λ₯Ό λ°©μ§€ν•˜κ³ , 변화에 μœ μ—°ν•˜λ©° μœ μ§€λ³΄μˆ˜κ°€ μ¦κ±°μ›Œμ§€λŠ” κ²¬κ³ ν•œ μ•„ν‚€ν…μ²˜μ˜ ν™©κΈˆλ₯ ." ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) μ†Œν”„νŠΈμ›¨μ–΄ 섀계 원칙(Software Design Principles)은 μ†Œν”„νŠΈμ›¨μ–΄μ˜ ν’ˆμ§ˆ, 가독성, μœ μ§€λ³΄μˆ˜μ„±μ„ κ·ΉλŒ€ν™”ν•˜κΈ° μœ„ν•΄ κ°œλ°œμžλ“€μ΄ μ§€μΌœμ•Ό ν•  일련의 κ·œμΉ™κ³Ό μ§€μΉ¨μž…λ‹ˆλ‹€. 1. **SOLID 원칙 (The Pillar)**: * **SRP (단일 μ±…μž„)**: ν•˜λ‚˜μ˜ ν΄λž˜μŠ€λŠ” ν•˜λ‚˜μ˜ μ±…μž„λ§Œ κ°€μ Έμ•Ό 함. * **OCP (개방-폐쇄)**: ν™•μ •μ—λŠ” μ—΄λ € 있고, μˆ˜μ •μ—λŠ” λ‹«ν˜€ μžˆμ–΄μ•Ό 함. * **LSP (λ¦¬μŠ€μ½”ν”„ μΉ˜ν™˜)**: μžμ‹ ν΄λž˜μŠ€λŠ” μ–Έμ œλ‚˜ λΆ€λͺ¨ 클래슀λ₯Ό λŒ€μ²΄ν•  수 μžˆμ–΄μ•Ό 함. * **ISP (μΈν„°νŽ˜μ΄μŠ€ 뢄리)**: λͺ…ν™•ν•œ λͺ©μ μ˜ μž‘μ€ μΈν„°νŽ˜μ΄μŠ€λ“€λ‘œ μͺΌκ°œμ•Ό 함. * **DIP (의쑴 μ—­μ „)**: ꡬ체적인 것이 μ•„λ‹ˆλΌ 좔상적인 것에 μ˜μ‘΄ν•΄μ•Ό 함. 2. **핡심 μ² ν•™**: * **DRY (Don't Repeat Yourself)**: μ½”λ“œ 쀑볡 제거. * **KISS (Keep It Simple, Stupid)**: λ‹¨μˆœν•¨μ΄ λ³΅μž‘ν•¨μ„ 이긴닀. * **YAGNI (You Ain't Gonna Need It)**: 미리 μ˜ˆμΈ‘ν•΄μ„œ λΆˆν•„μš”ν•œ κΈ°λŠ₯ λ§Œλ“€μ§€ μ•ŠκΈ°. * **Encapsulation**: λ‚΄λΆ€ 데이터와 λ‘œμ§μ„ 숨겨 νŒŒκΈ‰ 효과 μ΅œμ†Œν™”. 3. **효과**: * 기술 뢀채(Technical Debt) κ°μ†Œ, νŒ€ κ°„ ν˜‘μ—… 효율 μ¦λŒ€, 버그 λ°œμƒλ₯  급감. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌**: κ³Όκ±°μ—λŠ” 'μ™„λ²½ν•œ 초기 섀계'λ₯Ό μ§€ν–₯ν–ˆμœΌλ‚˜, ν˜„λŒ€ μ†Œν”„νŠΈμ›¨μ–΄ 정책은 λΉ λ₯Έ 배포 ν›„ λ¦¬νŒ©ν† λ§(Refactoring)을 μž₯λ €ν•˜λŠ” '점진적 μ§„ν™”ν˜• μ•„ν‚€ν…μ²˜' μ •μ±…μœΌλ‘œ μ „ν™˜λ¨(RL Update). - **μ •μ±… λ³€ν™”(RL Update)**: AI μ½”λ”© μ–΄μ‹œμŠ€ν„΄νŠΈμ˜ 보급에 따라, "AIκ°€ μ“΄ μ½”λ“œκ°€ 섀계 원칙을 μ€€μˆ˜ν–ˆλŠ”κ°€"λ₯Ό μžλ™μœΌλ‘œ κ²€μ¦ν•˜λŠ” 'AI μ½”λ“œ κ±°λ²„λ„ŒμŠ€ 및 λ¦°νŒ… μ •μ±…'이 ν•„μˆ˜ 개발 μΈν”„λΌλ‘œ 자리 작음. ## πŸ”— 지식 μ—°κ²° (Graph) - [[Principles-of-Architecture]], [[Reactive-Programming]], [[Robustness]], [[Safety & Reliability]], [[Resource-Management]] - **Modern Tech/Tools**: SonarQube, ESLint, Design Patterns (Gang of Four), Clean Code. ---