Files
2nd/10_Wiki/Topics/AI/Loose-Coupling.md
T

28 lines
1.8 KiB
Markdown

---
id: P-REINFORCE-AI-LOOSE-COUPLING
category: "10_Wiki/💡 Topics/AI"
confidence_score: 0.99
tags: [SoftwareEngineering, Architecture, LooseCoupling, Flexibility]
last_reinforced: 2026-04-20
---
# [[Loose-Coupling]] (느슨한 결합)
## 📌 한 줄 통찰 (The Karpathy Summary)
> "부품 하나를 갈아 끼운다고 전체 기계가 멈추지 않게 하는 격리 수단." 구성 요소들이 서로의 내부 구현을 알지 못하게 하고 표준화된 인터페이스로만 소통하게 하여, 독립적인 변경과 확장을 가능하게 하는 설계의 핵심 미덕이다.
## 📖 구조화된 지식 (Synthesized Content)
- **Opposite**: **Tight Coupling** (한 곳을 고치면 사방에서 에러가 나는 스파게티 코드).
- **Core Techniques**:
- **Interface-based Programming**: 구체 클래스가 아닌 설계도(Interface)에 보고함.
- **Event-Driven**: 메시지를 던져두고 누가 받을지는 신경 쓰지 않음.
- **Dependency Injection**: 필요한 도구를 스스로 만들지 않고 외부에서 공급받음.
- **Benefit**: **Parallel Development**(팀 간 독립 작업 가능), **Testability**(가짜 객체로 대체 용이), **Maintenance**(수정 범위 국소화).
## ⚠️ 모순 및 업데이트 (RL Update)
- 느슨한 결합을 추구하다 보면 코드의 가독성이 떨어지고(인터페이스를 따라 여러 파일을 뒤져야 함), 시스템 전체의 흐름을 한눈에 파악하기 힘든 '간접화의 저주'에 빠질 수 있다. 로직이 아주 단순하다면 과도한 격리보다는 적절한 결합이 생산성에 더 나을 수 있다는 실용주의적 균형이 필요하다.
## 🔗 지식 연결 (Graph)
- Related: [[Dependency-Injection]] , Inversion-of-Control (IoC)
- Fundamental: [[Modular-Programming]]