--- id: [[P-Reinforce|P-Reinforce]]-AI-LOOSE-COUPLING category: Dev confidence_score: 0.99 tags: [SoftwareEngineering, [[Architecture|Architecture]], LooseCoupling, Flexibility] last_reinforced: 2026-04-20 --- # [[Loose-Coupling|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|Dependency-Injection]] , [[Inversion|Inversion]]-of-Control (IoC) - Fundamental: [[Modular-Programming|Modular-Programming]]