일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코틀린
- rxjava
- 깃
- Jetpack
- compose
- 단위테스트
- 유닛테스트
- dagger2
- 안드로이드
- 테스트의 장점
- Kotlin
- Room
- 코딩테스트
- Android
- 파이썬
- 안드로이드 디자인패턴
- 컴포즈
- 자료구조
- 디자인패턴
- mock
- 안정성
- 제한함수
- UnitTest
- Python
- MVVM
- git
- 공격적 프로그래밍
- Di
- ViewModel
- Observable
Archives
- Today
- Total
세상을 바꾸는 개발자
[이펙티브 코틀린] 코틀린의 안정성 - 변수의 스코프를 최소화 하라 본문
안드로이드는 자바와 코틀린 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
}
//..
}
결론: 가변성을 피하고 스코프 범위를 좁게 만들면, 캡처링 같은 문제를 간단하게 피할 수있다
'안드로이드 > Kotlin' 카테고리의 다른 글
[이펙티브 코틀린] 코틀린의 안정성 - 최대한 플랫폼 타입을 사용하지 말라 (0) | 2023.07.12 |
---|---|
[이펙티브 코틀린] 코틀린의 안정성 - inferred 타입으로 리턴하지 말라 (0) | 2023.07.12 |
[이펙티브 코틀린] 코틀린의 안정성 - 가변성을 제한하라 (0) | 2023.07.09 |
[이펙티브 코틀린] 코틀린의 안정성 - 예외를 활용해 코드에 제한을 걸어라 (0) | 2023.07.08 |
[Kotlin] Assignment (=) , get() 의 차이 (0) | 2023.07.08 |
Comments