-
코틀린 아카데미 고급편후기/Book Review 2025. 3. 9. 00:23728x90반응형
"도서출판 '인사이트'의 도서 지원을 받아 작성한 리뷰입니다."
코틀린 고급이라니 너무 떨리자나 목차
- 1부 코틀린의 고급 기능
- 1장 제네릭 변성 제어자
- 2장 인터페이스 위임
- 3장 프로퍼티 위임
- 4장 코틀린 컨트랙트
- 2부 다양한 플랫폼에서의 코틀린
- 5장 자바 상호운용성
- 6장 코틀린 멀티플랫폼 사용하기
- 7장 자바스크립트 상호운용성
- 3부 메타프로그래밍
- 8장 리플렉션
- 9장 애너테이션 처리
- 10장 코틀린 심벌 처리
- 11장 코틀린 컴파일러 플러그인
- 12장 정적 분석 도구
제목대로 고급편인만큼 어렵고 이해하기 어려운 내용들도 더러 있었다. 그럼에도 알아두면 실무에 도움이 될 만한 내용도 많이 있어서 읽어볼 만한 가치는 충분히 있다고 생각된다. 기억에 남고 메모해 둔 내용들 위주로 리뷰를 남기고자 한다.
자바에서 공변은 제네릭의 심화버전으로 항상 등장하는 내용이었는데, 코틀린에서는 in/out 이라는 키워드를 사용한다. 피부와 와닿지 않지만 공변이 없으면 List도 쓰지 못한다. kotlin List 클래스의 시그니처는 아래와 같기 때문이다.public interface List<out E> : Collection<E>
책에서 이런식으로 직접 소스 코드도 보여주면서 설명을 해주기에 상상과 현실 사이의 괴리를 잘 메워준다.
이쯤에서 정리하자면,
out 제어자는 out-위치(정보를 내보내는 위치)의 타입 매개변수에만 적합합니다. 그래서 결과 타입이나 읽기 전용 프로퍼티의 타입에 쓰입니다.
반면 in 제어자는 정보를 받아들이는 위치(in-위치)에만 적합합니다. 그래서 입력 매개변수 타입에 쓰입니다.
- p.10
성능을 높이기 위한 기법으로 lazy 프로퍼티를 많이 사용하는데, 이에 대한 내용들도 점진적으로 개선해 가면서 예시로 설명해 주는 부분이 좋았다.지연 프로퍼티는 다음과 같은 프로퍼티에 적합합니다.
- 읽기만 가능합니다 (lazy는 val에서만 사용할 수 있습니다).
- 계산이 간단하지 않습니다 (간단하다면 lazy를 사용해도 큰 의미가 없습니다).
- 모든 인스턴스에서 사용하지는 않습니다 (그렇지 않다면, 일반 프로퍼티를 사용하는 것이 좋습니다).
- 한 인스턴스에서 두 번 이상 사용할 가능성이 높습니다 (그렇지 않다면, 게터를 사용해 정의하세요).
- p.71
평소에 인텔리제이를 쓰면서 "IDE 개발자들은 정말 대단하구나, 어떻게 이런 모든 경고/에러 등을 캐치하고 제안까지 해주는 기능을 만들지? 언어부터 마스터 한 사람들인가?(물론 kotlin은 인텔리제이를 만든 곳과 같은 JetBrains에서 만들긴 했다)"라는 생각이 들었다. 하지만 내 생각이 틀렸음을 알게 되었다. IDE가 해주는 게 아니라 코틀린 컴파일러가 해주는 거였다니. 그럼 다른 언어들도 그런 식으로 되어있는 건가 생각이 든다.인텔리제이 같은 IDEd에서 코틀린으로 코드를 작성하면 다양한 경고와 에러를 표시해 주고, 가용한 요소를 제안하거나, 코드를 자동으로 완성해 줍니다. 하지만 인텔리제이 자체가 코틀린을 분석하지는 않습니다. 이러한 기능 모두는 코틀린 컴파일러가 IDE에 제공하는 API를 활용해 구현됩니다.
-p.292
마지막으로 별거 아닌데 영어 초보로써 새롭게 알게된 사실이다. 코드 포맷을 지켜주는 linter에서 lint는 보풀이라는 뜻이고, linter는 보풀 제거기라는 뜻이었다 ㅋㅋ
그 외에도 다양한 내용들이 있었는데 나중에 시간이 되면 다시 살펴보아야겠다. 책의 마지막에 다음으로 추천하는 책은 이펙티브 코틀린이라고 한다. 아직 읽어보지 못했는데 조만간 읽어봐야겠다.
코틀린 아카데미: 고급편, 마르친 모스카와 (인사이트)코틀린 아카데미: 고급편 - 도서출판 인사이트
평범한 코틀린 개발자에서 진정한 코틀린 전문가로 거듭나기! 많은 코틀린 개발자가 실용적인 앱 개발을 위해 컨트랙트, 변성 제...
ebook.insightbook.co.kr
반응형'후기 > Book Review' 카테고리의 다른 글
가상 면접 사례로 배우는 대규모 시스템 설계 기초 (2) 2022.12.10 실리콘밸리 리더십 (0) 2022.09.11 기업의 성공을 이끄는 Developer Relations (0) 2022.06.27 객체지향의 사실과 오해 (2독) (3) 2022.03.05 SRE를 위한 시스템 설계와 구축 (2) 2022.02.23 - 1부 코틀린의 고급 기능