Java Without If: Either 타입을 활용한 함수형 Java 개발
Source
Evernote/Inbox/Java Without If - Ashton Kemerling.md
Summary
저자는 Clojure 대신 Java를 선호하는 팀에서 if 문을 거의 사용하지 않는 개발 방식을 소개합니다. 이는 단순한 메서드 디스패치가 아니라, Haskell/Scala 스타일의 함수형 라이브러리(Lambda)의 Either 타입을 적극 활용하기 때문입니다. Optional이 null 체크를 대체하듯, Either<L, R>는 예외 처리를 대체하여 실패 원인(Left)과 성공 결과(Right)를 타입 시그니처에 명시합니다. 이를 통해 map, flatMap 연산을 체이닝하여 중첩된 조건문이나 try-catch 블록 없이 JSON 파싱 및 검증 같은 복잡한 비즈니스 로직을 깔끔하게 구현할 수 있습니다.
Key Points
- 팀의 Java 코드베이스에서 테스트를 제외하고
if문이 10개 미만으로 사용됨. - 이 현상의 핵심은
Optional의 확장형인Either<L, R>타입의 적극적 활용임. Either는 실패(Left)와 성공(Right)를 구분하여 예외(Exception) 대신 타입 시스템으로 에러 처리를 관리함.map과flatMap을 통한 함수 체이닝으로 null 체크나 중첩된 try-catch 블록을 제거하고 코드의 가독성과 안전성을 높임.- JSON 파싱, 검증, 비즈니스 로직 처리 등을
Either타입을 반환하는 함수로 연결하여 단일 진입점에서 에러를 처리하는 패턴 제시.