더북(TheBook)

data 클래스는 자동으로 구조 분해 선언을 지원한다.

Destructuring/Computation.kt

package destructuring
import atomictest.eq

data class Computation(
  val data: Int,
  val info: String
)

fun evaluate(input: Int) =
  if (input > 5)
    Computation(input * 2, "High")
  else
    Computation(input * 2, "Low")

fun main() {
  val (value, description) = evaluate(7)
  value eq 14
  description eq "High"
}

Pair<Int, String>을 반환하는 것보다 Computation을 반환하는 게 낫다. 결괏값의 타입에 좋은 이름을 붙이는 것은 함수에 자신의 역할을 잘 설명하는 이름을 붙이는 것만큼이나 중요한 일이다. 그리고 Computation 클래스에 정보를 추가하거나 제거하는 것이 Pair에 정보를 추가하거나 제거하는 것보다 훨씬 쉽다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.