개발자 Eli Bendersky는 ‘검증하지 말고 파싱하라’ 원칙을 Rust 예제로 설명했습니다. 비어 있지 않음을 확인한 뒤에도 Vec로 돌려주면 호출자는 빈 경우를 다시 처리해야 하지만, 머리 요소를 반드시 갖는 NonEmpty 타입으로 변환하면 조건이 타입에 남습니다. Serde와 열거형, 0이 아닌 정수 타입도 같은 접근의 예로 제시합니다. 모든 입력 검사가 사라지는 것은 아니며, 파싱 단계가 보장한 불변조건과 이후 변경 가능성을 설계에 정확히 반영하는 것이 핵심입니다.
Tech로 돌아가기
Tech
Rust 해설, 검증한 조건을 타입으로 보존하는 설계 소개
입력 경계에서 조건을 타입에 담으면 후속 코드의 반복 검사와 잘못된 가정을 줄일 수 있습니다.