• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

Optional 을 인스턴스 필드 타입으로 쓰지 말자

21.01.29 00:52 작성 조회수 199

4

안녕하세요 백기선님,

13분 40초즈음 부터 나오는 설명에 대해 좀 더 궁금해서 문의드립니다. 인스턴스 필드 타입으로 옵셔널을 쓰면 더 명확해서 null 체크에도 도움이 되겠다 싶었는데요, 강의에서는 사용하지 말 것을 추천하셔서요. 

어떤 이유로 도메인 설계에 좋지 않은 것인지, 구체적인 회피 방법(말씀해주신 델리게이션을 실제로 구현하는 방법도 궁금합니다) 은 무엇인지 궁금합니다. 

감사합니다.

답변 4

·

답변을 작성해보세요.

5

스택오버 플로에서 Optional을 개발에 참여했던 개발자가 비슷한 질문에 답글을 단 것을 찾을 수 있습니다.

https://stackoverflow.com/questions/26327957/should-java-8-getters-return-optional-type/26328555#26328555

해당 답글을 한번 읽어보시기 바래요.

0

전해주신 글에서 많은 도움을 받았습니다. 감사합니다.

0

답변 감사드립니다. Optional을 만든 목적이 메소드 리턴타입으로 쓰기 위한 용도라고 하셨는데요, API 에서는 그러한 내용이 없는듯합니다. 관련하여 좀 더 자세히 알 수 있을만한 자료가 있을까요~?

  • https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html

감사합니다. 

0

Optional을 만든 목적이 메소드 리턴타입으로 쓰라는 용도로 만들어진거라 그밖에 다른 용도로 쓰신다면  Optional을 만든 취지에 어긋나게 사용하는 겁니다.

설계적인 측면에서 "어떤 필드가 있을 수도 있고 없을 수도 있다"라는 의미인데 "어떤 필드의 값이 있을 수도 있다 없을 수도 있다"와는 전혀 다른 이야기가 됩니다. 해당 필드가 그 도메인에 있는게 맞는지 다시 생각해 보는게 좋겠죠.

델리게이션은 제가 어떤 의미로 사용했는지 정확히 기억나진 않지만 아마도 null을 허용하는 레퍼런스 타입을 쓰는걸 말한것 같네요.