Effective Kotlin - 변수의 범위 최소화

2021. 7. 22. 09:18Computer

변수의 범위를 최소화 하자

핵심포인트

  • property 대신 지역변수를 사용하자
  • 가능한한 가장 작은 범위에서 변수를 사용하자

책에서말하는 근거

  • Scope 이 넓은 변수의 경우, 그 만큼의 코드를 다른 개발자들이 파악해야한다.
    • 언제 정의되었고 초기화되는지. ( 일반적으로 우리는 정의를 함과 동시에 초기화를 진행하는 경우가 많다. 그렇지 않으면, 코드상에서 해당 변수가 언제 초기화되는지도 찾아봐야 하기 떄문이다. )
    • for 문을 마치고 나서, 변경된 값의 내용을 추리해야한다던지.
    • Sequence 내부 로직 처리시, 의도치 않는 값이 나올 수 있다.

에라토스테네스 체 ( 소수 구하는 방법 중 하나 )

동작하는 코드

```
val primes: Sequence<Int> = sequence { 
  var numbers = generateSequence(2) { it + 1 }
  while (true) { 
      val prime = numbers.first() 
      yield(prime)
      numbers = numbers.drop(1) 
      filter { it % prime != 0 }
  } 
}
print(primes.take(10).toList()) // [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
```

동작하지 않는 코드

```
val primes: Sequence<Int> = sequence { 
  var numbers = generateSequence(2) { it + 1 }
  var prime: Int
  while (true) { 
      prime = numbers.first() 
      yield(prime)
      numbers = numbers.drop(1) 
      filter { it % prime != 0 }
  } 
}
print(primes.take(10).toList()) // [2, 3, 4, 5, 6, 7, 8, 9 ,10 ,11]
```

참고문헌

  • Effective Kotlin
반응형