이 책은 안드로이드로 진로를 결정하면서 제일 첫 번째로 읽게 된 책이다.
그 전까지는 년마다, 달마다 계속 변해가는 프로그래밍 언어를 책으로 공부한다는 것이 과연 옳은 생각일까? 라는 생각을 하였다. 하지만, 주변 사람들이 Effective Java
를 읽으며 배워가는 것이 너무나 많다고 하길래 그럼 나는 Kotlin
을 공부하니까Effective Kotlin
을 나도 언젠간 읽어야지 생각만 하고 있었다.
하지만 깃허브, 스택오버플로우에서 코틀린 소스를 검색할 때 이해가 안가는 한정자 infix
, refied
, crossline
, inline
등 생소한 한정자와 data class
, enum class
, sealed class
와 같은 생소한 클래스에 대해 공부할 수 있을 것이라 생각하고 이 책을 읽으면 해당 클래스가 무엇이고, 한정자가 무슨 역할을 하는지 알 수 있을 것이라 생각했다.
위의 한정자와 클래스에 대한 설명을 해주기는 하지만 대부분 어떠한 상황일 때는 어떤 한정자를 쓰는 것을 고려하세요. 람다식이 들어간 함수는 inline
한정자를 붙이면 어떠한 식으로 성능이 최적화 됩니다, 상태 패턴을 사용하기 위해서는 sealed class
사용을 고려하세요 등 이미 해당 단어들을 알고있다는 가정하에 잘 활용하는 방법을 주요하게 가르쳐 준다.
책의 난이도는 절대 낮은편이 아니다. 애초에 초심자가 처음으로 읽을 책이 아니였다. 책의 초반에도 숙련된 코틀린 개발자를 위한 책이라고 설명하고 있다. 그것도 자바를 이미 좀 해본 코틀린 개발자면 더욱 읽기 쉬울 것이다. 나는 자바도 안해보았고, 코틀린에 대한 숙련도도 높지 않았기에 더 어려웠던 책이였다.
초심자에겐 용어도 문제다. 프로퍼티
, 아규먼트
, 델리게이트(위임)
, DSL
, 람다
, 컴포지션
, 함수 타입
등 이상한 단어가 끝도 없이 나온다.
책을 읽으며 내용을 이해하기 위해 따로 검색을 통해 공부한 경우가 정말 많다. 공부하기 위해 책을 읽는 것이 아니라 책을 이해하기 위해 공부를 한다니..
책을 처음 읽기 시작한게 8월 말인데 다 읽은 후 이제 12월이 끝나버렸다. 학교를 통학하면서 중간중간만 읽기도 했고, 시험 기간에는 아예 안 읽기도 하여서 (너무 어려워서 읽을 맛이 안남) 완독하는데 많은 시간이 걸렸다.
내용의 퀄리티는 정말 좋다. 중간까지 읽다가 언젠가는 다시 떠올려야할 내용이 계속 나오기 때문에 책의 목차별로 내용을 정리하여 블로그에 포스팅 했다.(읽는데 오래 걸린 이유를 변명하자면 블로그 포스팅이 있다.) 다시 책을 피긴 귀찮으니까 😤
찾아 보기 좋게 내 레포지토리에 정리해서 넣어놨다. (이 정도면 저작권 신고가 들어와도 할말이 없다.)
책을 읽는 중간에 우테코 프리코스를 진행하며 피어리뷰를 통해 초심자의 코틀린 소스를 볼 수 있는 기회가 있었다. 타인의 소스를 보며 "어떤 점을 고치면 좋겠다"라는 생각이 들 수 있을만큼 코틀린에 대한 눈이 살짝 떠진것 같다.
안드로이드 뿐만 아니라 서버, 게임 개발자 등 코틀린을 사용하는 숙련된 개발자라면 한번쯤 읽어보면 좋을 것 같다. 만약 초심자라면 다시 한번 고려해보자