피드로 돌아가기
Dev.toFrontend
원문 읽기
UI 의존성 제거를 통한 Domain-Driven Validation 설계
Validación de formularios sin dependencias: trata las reglas como lógica de dominio en el frontend
AI 요약
Context
React Hook Form, Zod 등 외부 라이브러리에 Validation 로직을 위임함에 따라 비즈니스 규칙이 UI Layer에 파편화되는 문제 발생. 이로 인해 동일 로직의 중복 구현과 테스트 어려움 및 UI 프레임워크에 종속된 강한 결합도 형성.
Technical Solution
- ValidationRule 인터페이스 정의를 통해 검증 로직을 UI와 분리된 Pure TypeScript 객체로 캡슐화
- 단일 boolean 반환 대신 AppException 배열을 반환하여 다중 에러 상태의 정밀한 표현 가능 구조 설계
- AppException 내에 TranslationConfig를 포함하여 i18n 처리를 Domain Layer에서 사전 정의함으로써 UI 레이어의 번역 책임 제거
- Validator 클래스를 통한 Rule Composition 패턴 적용으로 복잡한 비즈니스 제약 사항의 모듈화 및 재사용성 확보
- UI 컴포넌트는 단순 상태 관리(useState)와 검증 실행 요청만 담당하는 단순 뷰어 역할로 한정
- 프레임워크 독립적 설계를 통해 React 외 Vue, Angular 등 타 프레임워크로의 로직 이식 가능성 확보
실천 포인트
- 검증 규칙을 라이브러리 Schema가 아닌 독립적인 Domain Class로 정의했는가? - 에러 메시지가 UI 컴포넌트 내부가 아닌 도메인 모델 내에서 관리되고 있는가? - UI 프레임워크를 제거한 상태에서도 검증 로직에 대한 Unit Test가 가능한 구조인가? - 다중 언어 지원 시 각 규칙에 대응하는 고유 ID(Stable ID)를 부여하여 관리하는가?