본문 바로가기

Books/Effective Kotlin

아이템 2: 변수의 스코프를 최소화하라

상태를 정의할 때는 변수와 프로퍼티의 스코프를 최소화 하는것이 좋다.

  • 프로퍼티 보다는 지역변수를 사용해라
  • 최대한 좁은 스코프를 갖게 변수를 사용해라.

스코프를 좁게 만드는 가장 큰 이유는 프로그램을 추적하고 관리하기 쉽다.

mutable 프로퍼티는 좁은 스코프에 걸쳐 있을 수록 변경 추적이 쉽다.

여러 프로퍼티를 한번에 설정 해야 하는 경우 구조 분해 선언을 사용해라

fun updateWeather(degrees: Int) {
    val (description, color) = when {
        degrees < 5 -> "cold" to Color.BLUE
        degrees < 23 -> "mild" to Color.YELLOW
        else -> "hot" to Color.RED
	}
}

결론적으로 변수의 스코프가 넓으면 위험하다.

캡처링

시퀀스를 사용하면 최종적인 prime 값으로만 필터링된다.

스코프를 넓게 쓰면 이런 캡처 문제가 발생할 수 있다.

val primes: Sequence<Int> sequence {
    var numbers = generateSequence(2) { it + 1 }

    var prime: Int
    while (true) {
        prime = numbers.first()
        yield(prime)
        numbers = numbers.drop(1).filter {it % prime != 0}
    }
}

print(primes.take(10).toList())
//[2,3, 5, 6,1,8, 9, 10, 11, 12]

정리

여러 이유로 스코프는 좁게 활용하는게 좋다.

var 보단 val을 사용하는게 좋다.

람다에서 변수를 캡처한다.

 

참조

 

《이펙티브 코틀린: 안전성, 가독성, 코드 설계, 효율성을 향상시키기 위한 52가지 전략과 기법》

코틀린은 인텔리제이(IntelliJ) IDEA를 개발한 젯브레인(JetBrains)에서 2011년에 공개한 오픈 소스 프로그래밍 언어로, 2017년 구글이 안드로이드 앱 개발을 위한 공식 언어로 채택하면서 주목을 받아왔

blog.insightbook.co.kr

 

'Books > Effective Kotlin' 카테고리의 다른 글

아이템 1: 가변성을 제한하라  (0) 2022.02.12
이펙티브 코틀린 1장 : 안정성  (0) 2022.02.12