Lombok - @Builder

h.Im·2024년 8월 29일
post-thumbnail

인강 강사님께서 @Builder 어노테이션을 선호하신다고 하셔서 @Builder 어노테이션 사용의 장점과 단점을 알아보겠습니다.

@Builder의 장점

가독성 향상

빌더 패턴을 사용하면, 객체 생성 시 어떤 필드에 어떤 값이 할당되는지 명확히 알 수 있습니다. 특히 필드가 많거나 optional 필드가 많은 경우 생성자를 통한 생성에 비해 유리합니다.

유연한 객체 생성

모든 필드를 필수적으로 초기화하지 않아도 되고, 필요한 필드만 선택적으로 설정 가능하기 때문에 생성자 오버로딩을 줄일 수 있게 해줍니다.

불변 객체 생성

빌더 패턴을 사용하면 불변 객체를 쉽게 생성할 수 있습니다. 빌더로 값을 설정한 후 build() 메서드를 호출하여 객체를 생성하면, 해당 객체는 불변 상태가 됩니다.

불변 객체: 불변 객체의 필드는 초기화된 후 변경 불가. 이로 인해 항상 동일한 상태가 유지되어 스레드 안전성, 단순성을 보장하는 특정을 가짐

체이닝 메서드로 간결한 코드 작성

@Builder는 체이닝 방식으로 필드를 설정할 수 있어, 코드가 간결해지고 한눈에 필드 설정 상태를 확인할 수 있습니다.


@Builder의 단점

코드 증가

@Builder를 사용하면 Lombok에 의해 자동으로 생성되는 코드가 많아져, 디버깅 시에 혼란스러울 수 있습니다.

런타임 오버헤드

빌더 패턴은 객체 생성 시 추가적인 객체(빌더 객체)를 생성하므로, 단순한 객체 생성보다 런타임 오버헤드가 발생할 수 있습니다. 하지만 일반적인 애플리케이션에서는 무시할 수 있는 수준입니다.

필수 필드 강제 불가

@Builder 사용 시, 생성자와 달리 필수 필드를 강제할 수 없습니다. 모든 필드가 선택적으로 초기화될 수 있어, 객체가 예상치 못한 상태로 생성될 가능성이 있습니다.

0개의 댓글