Getter 메서드 방식 알아보기 (feat. Lombok)

커비·2024년 12월 19일
0

Spring

목록 보기
6/6

숙련과제를 진행하면서 Getter 메서드 작성 방식에 대해 궁금해져서 적어보았다.
내가 작성한 코드는 직접 Getter 메서드 작성 방식, 인텔리제이가 추천해준 코드는 Lombok의 @Gettert 사용방식 이었다.

public class CalendarCreateRequestDto {
    private String name; // 작성 유저명
    private String title; // 할일 제목
    private String description; // 할일 내용
    private String date; // 작성일
    private String modify; // 수정일

    public String getName() {
        return this.name;
    }

}

내가 작성한 코드는 이렇게 직접 작성하는 방식이었다.
이렇게 작성하면 인텔리제이에서 노란색 줄을 그어서 추천하는 코드를 제안해준다.

public class CalendarCreateRequestDto {
    @Getter
    private String name; // 작성 유저명
    private String title; // 할일 제목
    private String description; // 할일 내용
    private String date; // 작성일
    private String modify; // 수정일
}

이유에 대해 ChatGPT에게 물어보니 아래와 같은 내용을 받을 수 있었다.


직접 Getter 메서드 작성 방식

public String getName() {
    return this.name;
}

장점

  • 커스터마이징 가능 : Getter 메서드를 직접 작성하면 값을 반환하기 전에 로직을 추가하거나 반환값을 변형할 수 있다. 예를 들어 name 값을 가공하거나 null 체크를 추가할 수 있다.
  • 직관적이고 명시적임 : 클래스의 모든 동작을 코드로 작성하여 클래스에서 제공하는 메서드와 기능을 한 눈에 파악하기 쉽다.

단점

  • 보일러플레이트 코드가 많음 : 필드가 많아질수록 Getter와 Setter 메서드를 반복 작성해야해서 코드가 길어지고 유지보수가 어려워질 수 있다.

Lombok의 @Getter 사용방식

@Getter
private String name;

장점

  • 간결함 : Lombok을 사용하면 getter 메서드를 자동으로 생성하므로, 코드가 훨씬 간결해지고 유지보수가 용이합니다.
  • 표준화 : 코드 작성 스타일이 일관되며, 개발 시간을 절약할 수 있습니다.
  • 추가 기능 지원 : Lombok은 다양한 어노테이션 (@Setter, @Builder 등)을 제공하므로 코드 작성이 더 효율적입니다.

단점

  • 의존성 필요: Lombok은 별도의 라이브러리이므로, 프로젝트에 Lombok 의존성을 추가해야 합니다. 이는 환경 설정이 제대로 되어 있지 않으면 문제가 될 수 있습니다.
  • 코드 명시성 부족: Lombok이 생성한 코드는 실제로 IDE에서 숨겨지므로, 생성된 메서드를 확인하기 어렵습니다. 이를 불편하게 여기는 개발자도 있습니다.

그렇다면 어떤 방식이 더 좋을까?

Lombok을 사용하는 것이 더 효율적이다.

특히 DTO 클래스처럼 Getter와 Setter만 필요한 간단한 객체에는 Lombok을 사용하는 것이 코드 작성하는데 속도를 높이고 유지보수를 쉽게 만들어준다.

하지만, Getter 메서드에 추가적인 로직이 필요하거나 팀에서 Lombok 사용이 금지된 경우 직접 작성하는 방식을 선택해야한다고 한다.

ChatGPT 답변

일반적으로 Lombok을 사용하는 방식이 더 권장되고 이를 통해 코드를 간결하게 유지하며 유지보수 시간도 줄어든다. 하지만 Lombok 설정과 사용 규칙이 프로젝트에서 합의된 경우에 사용하는 것이 좋다.

Lombok 공식문서 바로가기

profile
전공은 컴퓨터공학, 복수전공은 해킹보안학, 직장은 방학(파워 구직중)

0개의 댓글