검사와 사용을 분리하면 이후 수정에서 빈 상태 경로가 빠질 수 있다.
Optional<User>
unknown
isPresent()
branch
get()
unsafe if moved
map·orElseThrow
policy together
핵심: 검사와 추출보다 변환·기본값·예외라는 목적을 한 표현에 결합한다.