이펙티브 코틀린(가독성)
아이템 16: 프로퍼티는 동작이 아니라 상태를 나타내야 한다
프로퍼티는 사용자 정의 게터와 세터를 가질수 있다.
파생 프로퍼티 (derrived property) : var을 사용해서 만든 읽고 쓸 수 있는 프로퍼티는 게터와 세터 정의가 가능, val 로 읽기 전용 프로퍼티를 만들때는 field가 안생김
프로퍼티 사용시 주의점
- 원칙적으로 프로퍼티는 상태를 나타내거나 설정할 목적으로만 사용하는것이 좋고 다른 로직은 포함하지 않아야 된다.
프로퍼티 대신 함수로 사용해야 하는것이 좋은경우
- 연산 비용이 높거나 복잡도가 O(1)보다 큰 경우
- 비즈니스 로직(애플리케이션 동작)을 포함하는 경우
- 결정적이지 않은 경우
- 변환의 경우
- 게터에서 프로퍼티의 상태 변경이 일어나야 하는 경우
많은 사람들이 프로퍼티는 상태집합이고 함수는 행동을 나타낸다고 생각한다.