우당탕탕 개발일지

[Lombok] @AllArgsConstructor / @NoArgsConstructor 본문

개발

[Lombok] @AllArgsConstructor / @NoArgsConstructor

kyunge_ev 2023. 4. 27. 23:32

멋쟁이사자처럼 백엔드 스쿨 2기를 교육 받으면서 만들었던 프로젝트를 리팩토링 하며,

불필요한 코드를 공부하고 프로젝트를 정리해보기로 했다.

제일 먼저 눈에 띈 한 클래스 내 같이 작성된 @AllArgsConstructor / @NoArgsConstructor

해당 애노테이션이 어떤 용도인지를 파악하며 코드를 수정해보기로 했다.


@AllArgsConstructor 

클래스의 모든 필드 값을 파라미터로 받는 생성자를 자동으로 생성한다.

고로 클래스의 모든 필드를 한 번에 초기화할 수 있다.

하지만 파라미터를 꼭 다 받아야하는 경우가 아니라면 이 생성자는 굳이 필요가 없을 수 있다.

@NoArgsConstructor

파라미터가 없는 기본 생성자를 자동으로 생성한다.

이 애노테이션을 사용하면, 클래스에 명시적으로 선언된 생성자가 없더라도 인스턴스를 생성할 수 있다.


프로젝트에선 회원가입 클래스에 사용되었는데

필드로 사용된 username / password는 파라미터로 꼭 넘어와야하는 것들이기 때문에

기본 생성자는 빼고 AllArgsConstructor를 사용하기로 했다.

롬복을 사용하여 코드를 줄이고 코드 구현을 애노테이션으로 간단히 할 수 있지만

어떤 기능을 하고, 꼭 필요한 기능이 맞는지를 잘 생각해보고 적절히 사용해보자.