-
16장 - 프로퍼티는 동작이 아니라 상태를 나타내야 한다Kotlin/Effective Kotlin 요약 2023. 2. 15. 00:01728x90
코틀린의 프로퍼티는 자바의 필드와 비슷해 보입니다.
//Kotlin의 프로퍼티 var name: String? = null //Java의 필드 String name = null;
둘은 유사해 보이지만 프로퍼티는 사용자 정의 게터와 세터를 가질 수 있습니다.
fun main() { val custom = Custom() println(custom.myClassField) custom.myClassField = "hi" println(custom.myClassField) } class Custom{ var myClassField: String = "hi" get(){ if(field == "hi") { return "안녕" } return field } set(value){ field = "customSetter" } }
이처럼 프로퍼티를 함수 대신 사용할 수 있지만, 완전히 대체해서 사용하는 것은 좋지 않습니다.
만약 많은 계산양이 필요할 경우 사용자는 관습적으로 게터에서 그런 계산량이 필요하다고 예상하지 못할 수 있습니다.
원칙적으로 프로퍼티는 상태를 나타내거나 설정하기 위한 목적으로 사용하는 것이 좋고 다른 로직 등을 포함하지 않아야 합니다.
구체적으로 프로퍼티 대신 함수를 사용하는 것이 좋은 경우
- 시간복잡도가 O(1) 보다 큰 경우
- 비즈니스 로직을 포함하는 경우
- 결정적이지 않은 경우(멱등성이 없는 경우)
- 형변환이 일어나는 경우
- 게터에서 프로퍼티의 상태 변경이 일어나야 하는 경우
반대로 getter setter의 경우에는 특별한 이유가 없다면 함수를 사용하면 안 됩니다.
728x90'Kotlin > Effective Kotlin 요약' 카테고리의 다른 글
18장 - 코딩 컨벤션을 지켜라 (0) 2023.02.17 17장 - 이름 있는 아규먼트를 사용하라 (0) 2023.02.16 15장 - 리시버를 명시적으로 참조하라 (0) 2023.02.13 14장 - 변수 타입이 명확하지 않은 경우 확실하게 지정하라 (0) 2023.02.12 13장 - Unit?을 리턴하지 말라 (0) 2023.02.11