목록Kotlin/이펙티브 코틀린 (52)
안드로이드 개발자 노트
스코프라는 것은 요소를 볼 수 있는 컴퓨터 프로그램 영역으로, 가시성(visible)을 의미합니다. 상태를 정의할 때는 변수와 프로퍼티의 스코프를 최소화하는 것이 좋습니다. 프로퍼티보다는 지역 변수를 사용하는 것이 좋다. 최대한 좁은 스코프를 갖게 변수를 사용한다. 예를 들어 반복문 내부에서만 변수가 사용된다면, 변수를 반복문 내부에 작성하는 것이 좋다. // 나쁜 예 var user: User for (i in users.indices) { user = users[i] print("User at $i is $user") } // 조금 더 좋은 예 for (i in users.indices) { val user = users[i] print("User at $i is $user") } // 제일 좋은 예..
읽기, 쓰기가 가능한 프로퍼티나 mutable 객체는 상태를 가집니다. 상태를 갖게 한다는 것은 변한다는 것이고, 변하는 요소를 관리하는 것은 어렵습니다. 프로그램을 이해하고 디버그하기 힘들어진다. 코드의 실행을 추론하기 어려워진다. 멀티스레드 프로그램일 경우 충돌이 발생할 수 있다. 테스트하기 어렵다. 정렬되어 있는 리스트의 경우 가변 요소를 추가한다면, 요소의 변경이 일어날 때마다 리스트 전체를 다시 정렬해야한다. 가변성을 제한할 수 있는 방법은 immutable 객체를 만들거나, 프로퍼티를 변경할 수 없게(read only) 막는 것이 가장 쉽습니다. 이 중에서 많이 사용되고 중요한 것들을 정리해 보면 다음과 같습니다. 읽기 전용 프로퍼티(val) 가변 컬렉션과 읽기 전용 컬렉션 구분하기(immut..