[Effective Kotlin] 아이템 37. 데이터 집합 표현에 data 한정자를 사용하라

Jimin Lim·2023년 10월 8일
0

Effective Kotlin

목록 보기
37/39
post-thumbnail

아이템 37

데이터 집합 표현에 data 한정자를 사용하라

자동으로 생성되는 함수

Data 한정자를 붙이면 다음과 같은 함수가 자동으로 생성된다.

  1. toString
  2. equals & hashCode
  3. copy
  4. componentN(component1, component2)

toString

클래스 이름과 기본 생성자 형태로 모든 프로퍼티와 값을 출력해준다.

print(player) // Player(id=0, name=Gecko, points=9999)

equals

기본 생성자의 프로퍼티가 같은지 확인해 준다.

copy

immutable 데이터 클래스를 만들 때 편리하다. 기본 생성자 프로퍼티가 같은 새로운 객체를 복제한다. (얕은 복사)

compnentN

아래 코드와 같이 객체를 해체할 때 사용한다.

val (id, name, pts) = player

하지만 위치 순서를 혼동해서 객체를 잘못 해체하는 문제가 발생할 수 있으니, 기본 생성자에 지정한 프로퍼티 이름과 같은 이름을 사용하도록 하는게 좋다.

튜플 대신 데이터 클래스 사용하기

Pair, Triple 와 같은 튜플은 몇 가지 지역적인 목적에서만 사용하는 것이 좋다.

  1. 값에 간단하게 이름을 붙일 경우
  2. 미리 알 수 없는 집합을 표현할 때

data로 나타내는 것이 어떤 역할을 하는지 이름을 붙일 수 있으므로 가독성면에서 좋다.

//tuple
Pair<String, String>? 

//data
data class FullName(
	val firstName: String, 
    val lastName: String
)
profile
💻 ☕️ 🏝 🍑 🍹 🏊‍♀️

0개의 댓글