Files
2nd/10_Wiki/Topics_GD/Fluent-Interface-Design.md
T

28 lines
1.7 KiB
Markdown

---
id: [[P-Reinforce|P-Reinforce]]-AI-FLUENT-INTERFACE
category: "10_Wiki/💡 Topics/AI"
confidence_score: 0.96
tags: [SoftwareEngineering, API, Pattern, CleanCode]
last_reinforced: 2026-04-20
---
# [[Fluent-Interface-Design|Fluent-Interface-Design]] (유연한 인터페이스 설계)
## 📌 한 줄 통찰 (The Karpathy Summary)
> "마치 소설처럼 읽히는 코드, 메서드 체이닝의 미학." 객체와 메서드 호출을 연결하여 자연어 문장처럼 부드럽게 흐르는 코드를 작성하게 함으로써, 가독성과 작가적 즐거움을 극대화하는 설계 기법이다.
## 📖 구조화된 지식 (Synthesized Content)
- **Concept**: 메서드가 `this`(자기 자신)를 반환하도록 설계하여, 점`.`을 찍고 계속해서 명령을 이어가게 함.
- **Example**: `builder.setName("Ant").setAge(1).build();`
- **[[goal|goal]]**:
- **Readability**: 비개발자가 봐도 의도를 파악할 수 있는 선언적 구조.
- **Discoverability**: 점을 찍으면 바로 다음에 가능한 행동들이 나열되어 API 사용이 쉬워짐.
- **Domain Specific Languages (DSL)**: 특정 도메인 전용 언어를 구축할 때 핵심적인 패턴이다.
## ⚠️ 모순 및 업데이트 (RL Update)
- 플루언트 인터페이스는 디버깅 시 중간 단계에서 멈추기 어렵게 만들 수 있으며, 너무 길어지면 오히려 가독성을 해칠 수 있다. 또한 '강한 결합'을 유도할 수 있으므로, 각 단계가 독립된 기능을 수행하면서도 조화롭게 연결되도록 인터페이스를 매우 정교하게 설계해야 한다.
## 🔗 지식 연결 (Graph)
- Related: Clean-Code , Builder-Pattern
- Evolution: [[Functional-Programming|Functional-Programming]]