🕊️ 롬복은 그만! 클린 코드를 위해 레코드 사용하기

"코드를 읽고 쓰는 데 걸리는 시간의 비율은 10대 1이 훨씬 넘는다." 클린코드의 저자 Robert C. Martin이 한 말입니다.


"User" 클래스를 정의해야 한다고 가정해 봅시다. User 클래스는 유저 데이터를 저장하고, username, email, userId 필드를 가지고 있습니다. 단순히 getter, setter, toString 등의 메소드를 정의하려면 적어도 65줄의 코드가 필요할 것입니다.


📌 롬복으로 고치기

좋은 방법은 롬복 라이브러리를 사용하는 것입니다. 롬복은 반복적으로 나타나는 코드(보일러 플레이트)들을 줄여줍니다. 하나의 어노테이션으로 65줄의 코드를 5줄로 바꿔줍니다.


@Data 어노테이션은 자동으로 모든 getter, setter, toString, constructor, hashCode, equals 메소드를 만들어 줍니다. 혹은 개별적인 어노테이션을 사용하여 필요한 기능만 사용할 수도 있습니다.


📌 롬복의 문제점

다만 롬복에는 몇 가지 문제점이 있는데, 가장 큰 두 가지는 다음과 같습니다.

  1. Third-party 의존성: 새로운 자바 버전과 호환성 문제가 있거나 라이브러리가 지원되지 않는 경우 코드에 문제가 생길 수 있습니다.

  2. IDE 호환성: 일부 IDE는 롬복 기능을 지원하지 않아 코드를 생성하는데 문제가 있을 수 있습니다.


📌 좋은 대안이 있을까요?

네, 레코드를 사용할 수 있습니다. 레코드는 무엇일까요?

레코드는 자바 16에서 도입된 새로운 기능입니다. 레코드는 데이터를 캡슐화하기 위한 클래스를 정의할 수 있는 간단한 방법을 제공합니다. 클래스의 필드를 기본으로 생성자, equals, hashCode, toString과 같은 일반적은 메소드를 자동으로 생성하는 클래스 유형입니다.


📌 레코드는 어떻게 사용하나요?

User 클래스의 레코드를 정의하기 위해, 다음과 같은 코드가 필요합니다.

```

public record UserRecord(String username, String email, int userId) {
}

```

이것이 끝입니다. 단지 한 줄의 코드로 65줄의 전통적인 코드와 5줄의 롬복 코드를 대체할 수 있습니다. 또한, 롬복과 다르게 써드 파티 라이브러리에 의존하지 않습니다.


📌 레코드 알아보기

```

// Initialize the record.
UserRecord userRecord = new UserRecord("rana", "rana@yopmail.com", 1234);
// get the properties
System.out.println(userRecord.email());
System.out.println(userRecord.toString());

```

명심하세요. 레코드는 getter 메소드에서 'get' 키워드를 사용하지 않습니다. 단지 변수 이름을 메소드 이름처럼 사용합니다. getEmail()이 아닌 email()을 사용합니다.


한번 초기화된 레코드의 변수를 바꿀 수는 없습니다. 모든 변수가 final입니다. 즉 레코드는 불변입니다.


📌 롬복 vs 레코드

  • 불변성: 롬복(X) 레코드(O)

  • 확장성: 롬복(O) 레코드(X)

  • 보일러 플레이트 코드: 롬복(줄임) 레코드(줄임)

  • 가독성: 롬복(비교적 어려움) 레코드(비교적 쉬움)

  • 써드 파티 의존성: 롬복(O) 레코드(X)

  • IDE 호환성: 롬복(쉽지 않음) 레코드(쉬움)

Avoid Lombok. Use Records to write cleaner code in Java 17.

Medium

Avoid Lombok. Use Records to write cleaner code in Java 17.

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 10월 30일 오전 10:16

 • 

저장 169조회 11,544

댓글 8

함께 읽은 게시물


🕊️ [Medium] 자바 개발자가 피해야 하는 11가지 실수 (1)

1

... 더 보기

15 + 11 Mistakes Every Java Developer MUST avoid TODAY

Medium

15 + 11 Mistakes Every Java Developer MUST avoid TODAY

 • 

저장 313 • 조회 12,577



요즘 사람들이 가장 많이 AI를 활용하는 분야 Top 10

1

... 더 보기

How People Are Really Using Gen AI in 2025

Harvard Business Review

How People Are Really Using Gen AI in 2025

 • 

저장 4 • 조회 733


< 초동 100만 장, 그런데 팬은 어디 있죠? - 엔터 테크와 데이터로

1

... 더 보기

토스에 합류하다

... 더 보기

토스에 합류하다

velog.io

토스에 합류하다