상태를 정의할 때는 변수와 프로퍼티의 스코프를 최소화하는 것이 좋다.
스코프: 요소를 볼 수 있는 컴퓨터 프로그래밍 영역이다. 코틀린의 스코프는 기본적으로 중괄호로 만들어지며, 내부 스코프에서 외부 스코프에 있는 요소에만 접근할 수 있다.
// 나쁜 예
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")
}
스코프를 좁게 만들어야 하는 이유
// 나쁜 예
val user: User
if (hasValue) {
user = getValue()
} else {
user = User()
}
// 조금 더 좋은 예
val user: User = if(hasValue) {
getValue()
} else {
User()
}