책/Effective Kotlin

책/Effective Kotlin

[이펙티브 코틀린] 아이템4: inferred 타입으로 리턴하지 말자

본문은 Effective Kotlin을 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 1. 코틀린의 타입추론 코틀린의 타입추론은 매우 간편하지만, 이를 제대로 사용하기 위해서는 먼저 타입추론의 특성을 충분히 인지해야 한다. inferred 타입은 정확하게 오른쪽에 있는 피연산자에 맞게 설정된다. 즉, 슈퍼클래스나 인터페이스로는 설정되지 않는다. open class Animal class Zebra: Animal() fun main() { var animal = Zebra() // animal은 Zebra 타입으로 추론된다. animal = Animal() // 오류: Type mismatch } 타입을 명시적으로 지정하면 이 문제를 해..

책/Effective Kotlin

[이펙티브 코틀린] 아이템3: 최대한 플랫폼 타입을 사용하지 말라

본문은 Effective Kotlin을 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 1. 플랫폼 타입이란? 코틀린에서는 자바 등의 다른 프로그래밍 언어에서 넘어온 타입들을 특수하게 다루는데, 이러한 타입을 플랫폼 타입(platform type)이라고 한다. 플랫폼 타입은 String!처럼 타입 이름 뒤에 ! 기호를 붙여서 표기한다. // Java public class JavaClass { public String getValue() { ... } } // Kotlin val name = MyJavaClass.value // 플랫폼 타입이 리턴됨 플랫폼 타입의 가장 큰 문제는 null 여부를 판단할 수 없다는 것이다. 따라서 코틀린과..

책/Effective Kotlin

[이펙티브 코틀린] 아이템2: 변수의 스코프를 최소화하라

본문은 Effective Kotlin을 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 1. 스코프를 최소화하기 위한 규칙 상태를 정의할 땐 변수와 프로퍼티의 스코프를 최소화 하는 것이 좋고, 이를 위해선 다음과 같은 규칙들을 활용할 수 있다. 1) 프로퍼티보다는 지역 변수를 사용하라 2) 최대한 좁은 스코프를 갖게 변수를 사용하라 // 1. Bad var user: User // for문 외부에서도 사용 가능함 for (i in users.indicies) { user = users[i] print("User at $i is $user") } // 2. Better for (i in users.indices) { val user = u..

책/Effective Kotlin

[이펙티브 코틀린] 아이템1: 가변성을 제한하라

본문은 Effective Kotlin을 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 1. mutable의 단점 + immutable의 장점 먼저 살펴보기에 앞서 mutable의 단점과 immutable의 장점을 살펴보자. mutable의 단점을 뒤집으면 immutable의 장점이 된다. mutable 객체의 문제 상태들 간의 관계를 이해하고, 상태의 변경을 추적해야 하므로 프로그램을 이해하고 디버그하기 힘들어진다. 시점에 따라 값이 달라질 수 있으므로 코드의 실행을 추론하기 어렵다 멀티스레드 프로그램일 때 적절한 동기화가 필요하다 상태 변경이 많을수록 더 많은 조합을 테스트해야 하므로 테스트하기 어렵다 컬렉션 내의 객체가 가변 객체로..

코택
'책/Effective Kotlin' 카테고리의 글 목록 (3 Page)