panic! or Result

에러 정책 결정표

에러 처리는 문법 선택이 아니라 호출자에게 어떤 선택권을 남길지, 어떤 값 보장을 타입에 넣을지 정하는 설계입니다.

Result

예상 가능한 실패

잘못된 입력, 파일 없음, 네트워크 실패처럼 호출자가 대처할 수 있는 경우입니다.

panic!

계약 위반

계속 실행하면 안전하지 않거나 호출자 버그가 분명한 나쁜 상태입니다.

expect

컴파일러 밖의 근거

하드코딩된 값처럼 사람이 참이라고 아는 전제를 메시지로 남깁니다.

type

반복 검증 제거

커스텀 타입 생성자에서 유효성을 확인해 이후 함수가 안전한 값만 받게 합니다.

API를 설계할 때 묻는 질문

사용자 입력

잘못 들어올 수 있다면 정상적인 실패로 보고 Result를 반환합니다.

프로그래머 버그

계약을 어긴 호출이라면 개발 중 바로 드러나도록 패닉을 고려합니다.

안전 문제

범위 밖 접근처럼 더 진행하면 위험하면 즉시 멈추는 편이 낫습니다.

타입 불변식

1부터 100 같은 규칙은 생성자와 비공개 필드로 한곳에 모을 수 있습니다.