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


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

스코프: 요소를 볼 수 있는 컴퓨터 프로그래밍 영역이다. 코틀린의 스코프는 기본적으로 중괄호로 만들어지며, 내부 스코프에서 외부 스코프에 있는 요소에만 접근할 수 있다.

// 나쁜 예
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")
}

// 제일 좋은 예
for ((i, user) in users.withIndex()) {
	print("User at $i is $user")
}

스코프를 좁게 만들어야 하는 이유

  1. 프로그램을 추적하고 관리하기 쉽다
  2. 스코프 범위가 너무 넓으면 다른 개발자에 의해서 변수가 잘못 사용될 수 있다
// 나쁜 예
val user: User
if (hasValue) {
    user = getValue()
} else {
    user = User()
}

// 조금 더 좋은 예
val user: User = if(hasValue) {
    getValue()
} else {
    User()
}