-
반응형
가변성을 제한하라
- 코틀린은 모듈(클래스, 객체, 함수, 타입별칭, 톱레벨 프로퍼티 등)로 프로그램을 설계한다.
- 상태 변경이 많아지면 추적하는 것이 힘들어진다.
- var 가변성이 있으면 코드의 실행을 추론하기 어려워진다.
- 변경이 많으면 더 많은 조합을 테스트 해야한다.
- 그러므로 변할 수 있는 지점은 줄일수록 좋다.
- 코틀린은 읽기전용 프로퍼티 val을 사용해 가변성을 제한할 수 있다.
- 다만, mutable 객체라면 내부적으로 변할 수 있다.
- val 이 읽기전용 프로퍼티이지만 불변(immutable)을 의미하진 않는다.
- 완전히 변경할 필요가 없는 변수라면 final을 활용하자.
- 읽기 전용 : Iterable, Collection, Set, List
- 읽기쓰기 : MutableIterable, MutableCollection, MutableSet, MutableList
- 읽기 전용에서 mutable로 변경해야 한다면, 복제(copy)를 통해서 새로운 mutable 컬렉션을 만드는 list.toMutableList를 활용해야한다.
- Delegates.observable을 사용하면 변경이 있을 때 감지할 수 있다.
- var list = mutableList<Int>() 이렇게 두 지점에 모두 가변성을 주는건 좋지 않다. 두 지점에 대한 동기화를 모두 구현해야하고, 모호성이 발생해 +-를 사용할 수 없다.
- 상태를 나타내는 mutable 객체를 외부에 노출하는 것은 위험하다.
반응형'개발 > Android' 카테고리의 다른 글
이펙티브 코틀린 : 예외를 활용해 코드에 제한을 걸어라 (0) 2023.02.19 이펙티브 코틀린 : 변수의 스코프를 최소화하라 (0) 2023.02.18 [Android] 카카오 로그인을 구현하면서 경험한 시행착오 (0) 2023.01.29 [Android] CollapsingToolbarLayout, ViewPager2를 함께 사용시 스크롤 이슈 해결방법 (0) 2023.01.19 [Android | Kotlin] Bottom Sheet Dialog 개발하기 (0) 2023.01.17 댓글