피드로 돌아가기
Dev.toBackend
원문 읽기
2년간의 시행착오로 완성한 Kotlin 전용 검증 라이브러리 KVerify 설계기
KVerify: A Two-Year Journey to Get Validation Right
AI 요약
Context
Ktor 프레임워크의 기본 검증 기능 부재로 인한 수동 if 체크 반복 발생. 하드코딩된 에러 메시지와 낮은 코드 재사용성으로 인한 유지보수 효율 저하. 기존 라이브러리의 학습 곡선 및 관리 상태에 대한 불만족.
Technical Solution
- 값과 이름을 함께 전달하는 NamedValue 래퍼 구조를 도입하여 필드별 에러 메시지 자동 매핑 구현
- ValidationContext 인터페이스를 단일 책임 원칙에 따라 onFailure 메서드만 남기는 구조로 단순화
- 확장 함수(Extension Functions) 기반의 DSL을 설계하여 체이닝 방식의 직관적인 검증 규칙 정의
- collect(수집)와 throw(즉시 중단) 두 가지 검증 전략을 제공하여 비즈니스 요구사항에 맞는 유연한 대응 체계 구축
- pathName 함수를 통한 계층적 경로 지정 방식으로 중첩 데이터 구조(Nested Object)의 검증 경로 추적 가능 설계
- 불필요한 Type Alias와 과도한 콜백 구조를 제거하여 라이브러리의 경량화 및 API 일관성 확보
Key Takeaway
경험이란 정답을 아는 것이 아니라 수많은 오답을 통해 최적의 아키텍처를 식별해내는 능력임. 복잡한 설계를 단순화하는 과정에서 핵심 도메인 로직만 남기는 덜어내기의 중요성.
실천 포인트
검증 로직 설계 시 필드 이름과 값을 결합한 컨텍스트를 유지하여 에러 메시지 생성 로직의 중복을 제거할 것