세상을 바꾸는 개발자

[이펙티브 코틀린] 코틀린의 안정성 - 변수의 스코프를 최소화 하라 본문

안드로이드/Kotlin

[이펙티브 코틀린] 코틀린의 안정성 - 변수의 스코프를 최소화 하라

헬창코딩 2023. 7. 11. 19:32

안드로이드는 자바와 코틀린 2가지 언어로 개발을 할 수 있지만 요즘 자바를 사용해서 개발하는 경우는 찾아보기 힘듬니다

저또한 코틀린을 사용합니다 하지만 사용하면서 잘 몰랐던 부분도 있고 한번도 써보지않는 편리고 좋은 기능들이 많이 존재합니다 그래서 이번에 복습할겸 이펙티브 코틀린의 내용으로 정리를 하려고 합니다.

안정성 - 변수의 스코프를 최소화 하라

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

  • 프로퍼티 보다는 지역 변수를 사용하는 것이 좋다
  • 최대한 좁은 스코프를 갖게 변수를 사용해야한다 반복문 내부에서만 변수가 사용된다면, 변수를 반복문 내부에서 작성하는 것이 좋다

나쁜 예)

var user: User
for(i in users.indices){
    user = users[i]
    print("User at $i is $user")
}

조금 좋은 예)

for(i in users.indices){
    var 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){
	getValue()
}else{
	user()
}

여러 프로퍼티를 한꺼번에 설정해야 하는 경우에는 구조분해 선언을 활용 하는 것이 좋다

//좋은 예

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

결론: 가변성을 피하고 스코프 범위를 좁게 만들면, 캡처링 같은 문제를 간단하게 피할 수있다

 

Comments