이펙티브 코틀린 아이템 16: 프로퍼티는 동작이 아니라 상태를 나타내야 한다

이펙티브 코틀린(가독성)

아이템 16: 프로퍼티는 동작이 아니라 상태를 나타내야 한다

  • 프로퍼티는 사용자 정의 게터와 세터를 가질수 있다.

  • 파생 프로퍼티 (derrived property) : var을 사용해서 만든 읽고 쓸 수 있는 프로퍼티는 게터와 세터 정의가 가능, val 로 읽기 전용 프로퍼티를 만들때는 field가 안생김

프로퍼티 사용시 주의점

  • 원칙적으로 프로퍼티는 상태를 나타내거나 설정할 목적으로만 사용하는것이 좋고 다른 로직은 포함하지 않아야 된다.

프로퍼티 대신 함수로 사용해야 하는것이 좋은경우

  • 연산 비용이 높거나 복잡도가 O(1)보다 큰 경우
  • 비즈니스 로직(애플리케이션 동작)을 포함하는 경우
  • 결정적이지 않은 경우
  • 변환의 경우
  • 게터에서 프로퍼티의 상태 변경이 일어나야 하는 경우

많은 사람들이 프로퍼티는 상태집합이고 함수는 행동을 나타낸다고 생각한다.

참조