강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

JN L님의 프로필 이미지
JN L

작성한 질문수

코딩으로 학습하는 GoF의 디자인 패턴

상태 패턴 1부 - 패턴 소개

@Builder에 대해 사소한 질문

작성

·

16

0

강의 잘 듣고 있습니다!

강의를 듣던 중 궁금한것이 있는데요.

예를 들어 결제 API를 만든다면:

- 금액, 결제수단: 필수

- 할인쿠폰, 메모: 선택

@Builder를 사용할 때 필수 파라미터 처리가 궁금합니다. 결제 API 같은 걸 만든다면 금액은 필수인데, @NonNull은 런타임 체크로 알고 있는데요. 프로그램을 실행해야 에러를 확인할 수 있었습니다. 필수 항목을 빠뜨리면 컴파일 에러가 나게 할 수는 없나요? 실무에서는 런타임 체크로 충분한가요, 아니면 중요한 객체는 컴파일 타임 체크를 위해 직접 구현해야 할까요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. JN L님.

@Builder를 활용한 빌더 패턴에서 필수 파라미터를 다루는 방법에 대한 질문이셨군요. 빌더 패턴은 객체 생성의 유연성을 제공하지만, 필수 항목에 대한 강한 검증 메커니즘을 필요로 할 수 있습니다.

주어진 질문 내용을 바탕으로 유사한 주제를 다룬 기존 답변이 있음을 알려드립니다:

  1. Builder 필수값 질문입니다. - 이 질문에서는 Lombok의 @Builder 어노테이션이 제공하는 기본 기능으로 필수 값을 다루는 방법에 대한 고민을 다루고 있습니다.

=> 이 질문에서는 필수 값을 컴파일 타임에 확인하기 어려운 Lombok의 @Builder의 단점을 극복하기 위한 대안적 접근 방법에 대해 논의하고 있습니다. 특히, 추가적인 유효성 검사를 수동으로 추가하거나 사용자 정의 빌더 메서드를 만드는 방법을 고려해 볼 수 있습니다.

  1. 메소드 레퍼런스를 통한 생성자 호출시 파라미터가 많을 경우… - 이 질문에서는 자바에서 기본 제공하는 함수형 인터페이스의 한계를 극복하고자 직접 정의함으로써 더 복잡한 시나리오를 처리하는 방법을 소개합니다.

앞의 답변을 종합해보면, 필수값을 컴파일 타임에 체크하는 것은 Lombok의 기본 기능으로는 어렵습니다. 대신, 수동으로 유효성 검사를 추가하거나 커스텀 빌더 패턴을 정의하여 이러한 제약 사항을 강제할 수 있습니다.

실무에서는 코드의 복잡성과 요구사항에 따라 런타임 체크로 충분할 수 있지만, 중요한 로직을 포함하는 경우 수동으로 검증하거나 컴파일 타임 체크를 강화하기 위해 별도의 설계를 고려하기도 합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

JN L님의 프로필 이미지
JN L

작성한 질문수

질문하기