1.9 KiB
1.9 KiB
id: P-Reinforce-AI-LOOSE-COUPLING category: Unified 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