피드로 돌아가기
Dev.toBackend
원문 읽기
Deferred Validation 기반 Fluent API 설계 및 Type Graph 조기 확정 전략
Dev Log: The first public API, and the type graph that wouldn't stay small
AI 요약
Context
C# 기반 NuGet 패키지 Munchausen의 Public API 설계 단계에서 발생한 의존성 문제 해결 과정 분석. API 공개 후 변경 비용의 급증을 방지하기 위해 구현 전 인터페이스 형태를 먼저 확정해야 하는 제약 상황 직면.
Technical Solution
- Deferred Validation 구조를 적용한 Lazy Builder 설계로 개별 메서드 호출 시점이 아닌 Build() 시점에 모든 정의 오류를 일괄 보고하는 메커니즘 구현
- Type Graph 내 미구현 클래스들을 Stub 형태로 조기 생성하여 Public Method의 시그니처 정의에 필요한 타입 의존성 해결
- NotImplementedException을 활용한 Placeholder 전략을 통해 세부 동작 구현 전 API Ergonomics를 먼저 검증하는 개발 워크플로우 구축
- dotnet format 분석기의 RS0016 진단 기능을 활용하여 Locked-surface 텍스트 파일의 수동 관리 오버헤드 제거 및 정확도 향상
- Linter의 RS0026 경고보다 API의 사용성(Usability)을 우선시한 의도적 Rule Suppression을 통한 인터페이스 설계 주도권 확보
실천 포인트
- Fluent API 설계 시 즉각적인 Validation보다 Build 단계로 지연시켜 전체 맥락의 오류를 한 번에 제공하는 패턴 검토 - 대규모 API 설계 시 Stub 타입을 활용해 구현체 없이 인터페이스 형상을 먼저 확정하고 사용자 경험을 검증하는 전략 적용 - 정적 분석 도구의 제안을 맹목적으로 따르기보다 설계 철학과 충돌 시 명확한 근거를 바탕으로 예외 처리하는 원칙 수립