Effective Kotlin 글 정리 내역
6 min readNov 1, 2020
Droid Knights 2020에서 발표하기 위해 정리하기 시작한 글과 영상을 포함해 지금까지 작성했던 Effective Kotlin 관련 글 정리 내역이다. 글 추가 시 업데이트 예정
다음 책을 참고하세요.
이 글들은 다음의 책을 함께 참고해 작성하는 글들입니다.
- Effective kotlin(원서)
- Effective java
- Kotlin in action
등을 참고하고 개인적인 생각을 함께 정리합니다.
드로이드 나이츠 2020에서 발표한 발표 자료
드로이드 나이츠 2020에서 발표한 영상
블로그에서 정리한 글
이 목록은 순서로 다시 정리했다. 추후 글 추가 시 중간중간에 포함될 수 있다.
읽기 좋은 Kotlin 코드! Property와 Scope Functions!
- 읽기 좋은 코드를 위한 코드 컨벤션과 Android Studio의 코드 정리 설정을 살펴본다.
- 코틀린의 Property 사용 시 주의할 점을 알아본다.
- Scope functions의 활용도를 어디까지 허용하는 게 좋을지 알아본다.
Java value는 언제나 null이다. 이를 Kotlin에서 활용 시 주의할 점을 알아본다.
- Java는 항상 null 임을 알아본다.
- Android SDK 사용 시에는 Nullable로 처리해야 할까?
- Java에서 Kotlin의 값을 호출 시에는 null에 주의해야 하는데 알아본다.
Kotlin 안전한 Type casting을 알아보고, 코드 가독성도 올려보자.
- Kotlin type casting 기법을 알아본다.
- Kotlin type casting의 잘 못 사용한 케이스를 알아보고, 개선점을 정리했다.
- Type casting을 통해 코드 가독성을 올리는 방법을 짧게 정리했다.
- 간단한 scope을 활용하는 형태를 알아본다.
Kotlin interface에는 왜 상수를 정의할 수 없을까?
- Java interface의 상수를 알아보고, 문제점을 알아본다.
- kotlin interface의 상수 정의가 왜 없는지를 Java를 통해 알아본다.
- Java 8의 interface에 추가된 default/static 사용에 대해 알아보고, 코틀린의 default 함수도 알아본다.
Kotlin과 Java의 Nested and Inner Classes를 알아보고, Nested classes를 왜 사용해야 하는지 알아본다.
- Java Inner classes와 Nested classes를 알아본다.
- Kotlin의 Inner classes와 Nested classes를 알아본다.
- Java의 어떤 문제로 코틀린은 Nested classes가 기본인지를 살펴본다.
코틀린 data class에서 자동으로 처리하는 equals와 hashCode를 알아보자.
- data class는 왜 사용하는지, Equals, hashCode를 왜 재정의 해야 하는지 살펴본다.
- 값 비교할 때 사용하는
==
(equals)와 메모리 비교를 위한===
를 알아본다.
data class를 활용하여 RecyclerView.DiffUtil을 잘 활용하는 방법
- RecyclerView.DiffUtil을 간단하게 알아본다
- data class 활용한 DiffUtil 사용 시 알아두면 좋을 부분을 알아본다.
Kotlin typealias와 inline class를 알아보고 적절한 사용법을 알아보자.
- kotlin Type aliases의 사용방법을 알아본다.
- Kotlin inline class의 사용방법을 알아본다.
Kotlin inline class와 inline functions을 알아보고, 적절하게 사용하는 방법을 살펴보자.
- inline class를 간단하게 살펴본다.
- inline functions을 간단하게 살펴본다.
- inline functions 활용성을 높이기 위한 부분을 좀 더 살펴본다.
상속! 악마의 속삭임, 그 속에 숨겨진 문제점, Kotlin에서는 Delegation을 활용해 보자.
- 상속을 알아보고, 상속의 단점을 알아보다.
- Composition을 알아본다.
- Kotlin의 Delegation을 알아본다.
안드로이드의 익숙한 BaseXXX class를 알아보고, 설계의 중요성을 알아보자.
- 안드로이드에서 Lifecycle을 따를 수 있는 상속을 계획할 수 있도록 글을 작성
- 몇 가지 Base를 살펴보고 좀 더 좋은 방향을 알아보자.
Kotlin extensions 정의를 알아보고, 활용 시 주의할 부분을 알아보자.
- Kotlin Extensions 정의를 알아본다.
- Kotlin extensions 활용 시 알아야 할 점을 알아본다.
- Kotlin extensions을 특정 클래스 내에 정의할 때 주의할 점을 알아본다.
Kotlin extensions use를 알아보고, 사용법을 알아보자.
- AutoCloseable과 Closeable을 알아본다.
- kotlin의 exception 처리를 알아본다.
- kotlin의 use를 이용하자.
Kotlin Collections에서 지연 계산(lazy)의 이점을 알아보자.
- collection 사용에 map, filter 등의 api를 알아본다.
- Collection에도 지연 계산이 가능한데, 지연 처리를 알아본다.
- inline을 활용하는 collection 확장 함수들이 성능이 더 좋을지, 지연 처리가 더 좋을지 살펴본다.
Kotlin Coroutines의 runBlocking은 언제 써야 할까? 잘 알고 활용하자!
- runBlocking을 UI에서 사용해도 괜찮을까?
- runBlocking의 내부 코드를 알아보자.
- 그럼 runBlocking은 언제 쓰는 게 좋을까?
Kotlin Coroutines의 GlobalScope을 어떻게 사용할 수 있을까? — 사실 추천하지 않는다.
- GlobalScope의 내부 코드를 살펴본다.
- GlobalScope을 이용한 Android UI 코드를 살펴본다.
- GlobalScope을 사용할 때 그나마 할 수 있는 예외를 살펴본다.
Kotlin CoroutineScope을 알아보고, cancel 처리에 대해서 알아보자.
- CoroutineScope 사용 방법을 알아본다.
- CoroutineScope 안에서 동작하는 무한 루프에서의 cancel의 동작을 알아본다.
- AAC-ViewModel의 viewModelScop을 알아본다.