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에 정보를 추가하거나 제거하는 것보다 훨씬 쉽다.

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