🛠 Java Optional 은 언제 사용해야할까?

Java 의 Optional Class 를 알고 계신가요? 프로그래밍을 하게 되면 고질적으로 만나게 되는 NullPointException(aka. NPE)을 피하고자 Java8 부터 지원하기 시작한 클래스입니다. 일반적으로 NPE 를 피하기 위해서는 null 여부를 검사해야할텐데요, 검사해야할 변수가 많으면 많을수록 코드가 복잡해지고 번거로울수 있지만 Optional 을 사용하면 이를 간소화할 수 있습니다. 그러면 무조건 Optional 을 쓰는게 맞는걸까요? 질문을 보셨을 때부터 예상하신 대로 무조건적으로 남용하게 될 경우 좋진 않습니다. 그러면 언제 Optional 을 쓰는게 좋을까요? 그리고 언제 Optional 을 안쓰는게 좋을까요? 👍 Optional 을 쓰기 좋은 예 ✔️ 함수의 반환값이 잠재적으로 null 일 수 있는 경우 반환값이 잠재적으로 null 일 수 있는 경우 반환하기 전에 Optional Class 로 랩핑하면 호출자는 결과가 null 일 수 있음을 알게 되고 Optional Class 에서 제공해주는 API 를 통해 호출자에게 어느 정도의 유연성을 제공합니다. 또한 DB 등과 같이 검색된 데이터에 대해 추가 검사를 수행해야 하는 경우 Optional 은 이를 위한 멋진 API 를 제공합니다. ✔️ Getter 래핑 도메인 모델의 특정 필드 중에 null 일 수 있는 필드(nullable)가 있는 경우 해당 필드에 대한 Getter method 의 반환값으로 Optional 을 사용할 수 있습니다. 이렇게 하면 사용하는 비지니스 로직에서 NPE 를 피하면서 적절하게 처리할 수 있는 좋은 방법이 될 수 있고, 직렬화 문제도 피할 수 있습니다. 👎 Optional 을 쓰기 안 좋은 예 ✔️ 매우 간단한 논리 매우 간단한 체크를 할 때 Optional 을 활용하는건 코드를 더욱 복잡하게 만들고 가독성이 떨어질 수 있습니다. Project Reactor 와 같은 Reactive Programming 을 하면 종종 마주치게 되는 간단한 로직을 매우 복잡하게 풀어가게 되는 안티 패턴이 보일 수 있습니다. ✔️ 클래스 필드 및 메소드 매개변수 Optional Class 는 Serializable 을 구현하지 않았기 때문에 클래스 필드로 사용할 경우 잠재적인 직렬화 문제가 발생할 수 있습니다. 또한 필요하지 않은 객체가 생성될 수 있어 성능 저하의 요인이 될 수 있습니다. 메서드의 매개변수로 Optional 을 사용할 경우 함수 호출시 null 을 넘겨야하는 경우 불필요하게 Optional 을 생성해야 합니다. 그래서 매개변수로 Optional 을 사용하기 보단, null 을 넘겨야 하는 매개변수를 제거한 버전의 메서드를 명확하게 정의하는게 좋습니다. 공유 드린 링크에 이에 대한 자세한 예시가 나와있으니 관심있으신 분들은 한번 보시면 좋겠습니다. 🔗 원문 링크: https://medium.com/javarevisited/4-reasons-why-you-should-use-java-optional-or-not-4e44d51a9645

4 Reasons Why You Should Use Java Optional - or Not?

Medium

4 Reasons Why You Should Use Java Optional - or Not?

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 7월 26일 오전 4:05

 • 

저장 50조회 3,971

댓글 0