학교 도서관 앱을 뒤져보다가 우연히 발견한 [다재다능 코틀린 프로그래밍] !!
코틀린을 이용해서 안드로이드 앱 개발 프로젝트는 꽤나 오랫동안 진행해봤지만, 코틀린 실력이 아닌 구글링 실력만 계속 늘고 있다고 생각이 들었다. 그래서 새로운 마음으로 코틀린을 처음부터 다시 공부해보자는 각오를 다지며 이 책으로 공부해보고자 한다!
코틀린 관련 서적을 총 세 권 빌렸는데,
1. (코틀린을 활용한) 안드로이드 프로그래밍
2. 다재다능 코틀린 프로그래밍
3. 이펙티브 코틀린
이 세 권이 가장 좋을 것 같아 선택하였다.
1번 서적은 아무래도 코틀린을 한 번도 접해보지 못한 극 초심자가 읽기 좋은 듯 하였고, 나는 아는 내용이 대부분이었기 때문에 빠르게 훑고 넘어갔다.
그리고 지금 2번 다재다능 코틀린 프로그래밍을 막 펼쳐봤는데, 아무래도 모르는 내용이 꽤 있는 듯 해서 정리해보고자 벨로그를 켰다.
이런 류의 글을 잘 안써보기도 했고, 상당히 어색하기 때문에 정리 또한 가독성이 그닥 좋지는 않을 것 같다. 점점 하다 보면 늘지 않을까 싶당
1-1 코틀린을 사랑할 수 밖에 없는 이유 챕터는 코틀린의 장점 및 설치방법 등을 설명하고 있기에 우선 건너뛰었다. 또한, 2-1 / 2-2 도 기존에 아는 내용이었기에 생략한다.
mutability(변경 가능성)은 코드를 추론하기 어렵게 만든다. 오류가 발생할 가능성이 높다.
하지만 val은 변수나 참조만 상수로 만들어서, 객체를 상수로 만드는 것은 불가능하다,
참조에 대한 immutability만 보장, 객체의 변화는 방지할 수 없다.
ex> String - immutable, StringBuilder - mutable
val message = StringBuilder("hello") -> message는 이뮤터블이지만, 참조하는 객체가 그 변수를 이용해서 변경됨
코틀린의 '=='는 자바의 equals()보다 null 참조에 있어서 안전함
코틀린에서 == 연산자를 사용할 때, null 체크를 먼저 하고 equals() 메소드를 실행!
>> 이런 종류의 차이들이 인지 부하를 증가시키고 코드 유지보수를 어렵게 만든다
이스케이프 문자를 사용하면 코드가 지저분해짐 -> 시작과 끝에서 큼 따옴표를 세 개 이용해 raw 문자열 사용
ex>
val escaped = "THe kid asked, \"How's it going, $name?\""
⬇️
val raw = """The kid asked, "How's it going, $name?"""
>> 작고 단순한 문자열이라면 이스케이프 문자가 필요한 문자열 사용, 복잡하거나 여러 줄이면 raw 문자열 사용!
raw 문자열은 줄바꿈 문자(엔터)를 포함할 수 있고, 문자열 템플릿으로 사용될 수 있기에 + 연산자 없이 멀티라인 문자열 생성 가능! BUT 멀티라인 문자열이 함수 내에 있으면, if 문 안에 있으면, 결과 문자열은 들여쓰기가 포함됨 -> 둘째 줄부터 모든 줄마다 수직선 (|)을 넣어줌, 그 다음 문자열부턴 margin을 없애기 위해 확장함수 trimMargin() 메소드 사용 (시작 구분점을 기본값인 | 대신 다른 문자 사용 가능)
아직까진 기초내용과 다름 없어서 이해하기에 어려운 부분은 아니다. 코틀린에 대한 아무런 개념 없이 무작정 뛰어들은 나에게 아주 적합한 것 같다. 2챕터에서는 자바와 코틀린의 차이를 기준으로 설명하는 것 같은데 꽤 설명이 잘 되어있는 것 같다. 자바를 먼저 접한 사람이라면 전혀 문제될 부분이 없어보인다.