728x90
이펙티브 코틀린 변수의 스코프 최소화
- 최대한 좁은 스코프를 갖게 변수를 사용하는 것이 좋음
- 반복문 내부에서만 변수가 사용된다면 변수를 반복문 내부에 작성하는 것이 좋음
스코프를 최소화하는 것이 좋은 이유
- 디버깅하기 수월
- mutable 프로퍼티는 좁은 스코프에 걸쳐 있을수록 디버깅이 용이함
- 변수의 범위가 넓으면, 다른 개발자에 의해서 변수가 잘못 사용될 수 있음
- 변수는 읽기 전용 또는 읽고 쓰기 전용 여부와 상관 없이, 변수를 정의할 때 초기화되는 것이 좋음
- if, when, try-catch, Elvis 표현식 등을 활용하면, 변수를 정의할 때 초기화할 수 있음
스코프 최소화 예시
// 나쁜 예
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()
}
// 나쁜 예
fun updateWeather(degrees: Int) {
val description: String
val color: Int
if (degrees < 5) {
description = "cold"
color = Color.BULE
} else if (degrees < 23) {
desciption = "mild"
color = Color.YELLOW
} else {
desciption = "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
}
}
- 변수의 스코프는 예시처럼 최대한 좁게 만들어서 활용하는 것이 좋음
- 최대한 타입 추론같은경우 val를 사용하여 가변성을 막아주는 것이 좋음
- 해당 스코프와 불변선언을 하는 규칙을 지키면, 코드 퀄리티가 높아짐 (잘못되는 경우의 수가 줄어듬)
너무나 당연한 내용, 코틀린 아니더라도 모든 개발언어에 해당
'KOTLIN' 카테고리의 다른 글
[KOTLIN] 연산자 오버로드를 할때는 의미에 맞게 사용 (0) | 2022.07.03 |
---|---|
[KOTLIN] NULLABLE UNIT 을 리턴하지 말라 (이펙티브코틀린) (0) | 2022.07.03 |
[KOTLIN] CONTEXT / DISPATCHER (0) | 2022.06.15 |
[KOTLIN] CANCELLATION (취소) (0) | 2022.06.09 |
[KOTLIN] SUSPEND 함수 (0) | 2022.06.06 |