isPresent와 get 분리는 확인 상태를 호출자에게 떠넘긴다

검사와 사용 사이 코드가 길어지면 get이 안전하다는 지역 근거가 사라지고 empty 처리를 빠뜨리기 쉽습니다.

isPresent → get

수동 분기·상태 부담

map/flatMap

값이 있을 때만 변환

orElseGet/orElseThrow

empty 정책과 반환 결합

핵심: 값에 적용할 동작은 map·ifPresent, 반환 정책은 orElse 계열로 묶습니다.