상태를 정의할 때는 변수와 프로퍼티의 스코프를 최소화 하는 것이 좋음
// 나쁜 예시 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") }
if, when, try-catch, Elvis 표현식 등을 활용하면,
최대한 변수를 정의할 때 초기화 가능!
// 나쁜 예시 val user: User if(hasValue) { user = getValue() } else { user =User() } // 조금 더 좋은 예시 val user: User = if(hasValue) { getValue() } else { User() }
🛠️ 구조분해 선언에 대해 추가 할 예정
// 나쁜 예시 fun updateWeather(degrees:Int){ val description: String val color: Int if(degrees < 5){ description = "cold" color = Color.BLUE }else if(degrees < 23){ description = "mild" color = Color.YELLOW }else{ description = "hot" color = Color.RED } //... } //조금 더 좋은 예시 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 } //... }
🛠️ 시퀀스, 캡처링에 대해 조금 더 조사 필요