[KOTLIN] 변수의 스코프 최소화 (이펙티브코틀린)

2022. 6. 18. 17:06·KOTLIN
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
'KOTLIN' 카테고리의 다른 글
  • [KOTLIN] 연산자 오버로드를 할때는 의미에 맞게 사용
  • [KOTLIN] NULLABLE UNIT 을 리턴하지 말라 (이펙티브코틀린)
  • [KOTLIN] CONTEXT / DISPATCHER
  • [KOTLIN] CANCELLATION (취소)
집한구석
집한구석
  • 집한구석
    tgyun615.info
  • 전체
    오늘
    어제
    • 카테고리 (183)
      • JAVA (38)
      • SPRING (15)
      • KOTLIN (23)
      • NETTY (1)
      • DEVOPS (3)
      • DOCKER (7)
      • KUBERNETES (2)
      • JAVASCRIPT (1)
      • SPLUNK (3)
      • ELK (7)
      • KAFKA (2)
      • GO (4)
      • ALGORITHM & DATA STRUCTURE (9)
      • IDE (5)
      • OS (16)
      • NETWORK (14)
      • GCP (2)
      • AWS (2)
      • DATABASE (10)
      • CLEANCODE (7)
      • OTHER (12)
  • 최근 글

  • 태그

    Elk
    cleancode
    AWS
    엘라스틱서치
    자바
    java
    프로그래머스
    클린코드
    이펙티브 코틀린
    Spring
    IntelliJ
    코틀린
    이펙티브코틀린
    go
    ElasticSearch
    Kafka
    splunk
    JPA
    SQL
    docker
  • 링크

    • github
    • linkedin
    • resume
  • hELLO· Designed By 정상우. v4.10.3
집한구석
[KOTLIN] 변수의 스코프 최소화 (이펙티브코틀린)
상단으로

티스토리툴바