이펙티브 코틀린 2

[KOTLIN] 멤버 확장 함수의 사용을 피하라 (이펙티브 코틀린)

멤버 확장 함수의 사용을 피하라 어떤 클래스에 대한 확장함수를 정의할 때 이를 멤버로 추가하는 것은 좋지 않음 암묵적 접근을 할 때 두 리시버 중에서 어떤 리시버가 선택될지 혼란스러움 class A { val a = 10 } class B { val a = 20 val b = 30 fun A.test() = a + b // 40일까? 50일까? } fun main() { B().apply { println(A().test()) } // 정답 : 40 } 확장함수가 외부에 있는 다른 클래스를 리시버로 받을 경우, 해당 함수가 어떻게 동작하는지 애매모호하게 됨 class A { var state = 10 } class B { var state = 20 fun A.update() = state + 10 // ..

KOTLIN 2022.07.27

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

이펙티브 코틀린 변수의 스코프 최소화 최대한 좁은 스코프를 갖게 변수를 사용하는 것이 좋음 반복문 내부에서만 변수가 사용된다면 변수를 반복문 내부에 작성하는 것이 좋음 스코프를 최소화하는 것이 좋은 이유 디버깅하기 수월 mutable 프로퍼티는 좁은 스코프에 걸쳐 있을수록 디버깅이 용이함 변수의 범위가 넓으면, 다른 개발자에 의해서 변수가 잘못 사용될 수 있음 변수는 읽기 전용 또는 읽고 쓰기 전용 여부와 상관 없이, 변수를 정의할 때 초기화되는 것이 좋음 if, when, try-catch, Elvis 표현식 등을 활용하면, 변수를 정의할 때 초기화할 수 있음 스코프 최소화 예시 // 나쁜 예 var user: User for (i in users.indices) { user = users[i] pri..

KOTLIN 2022.06.18