코틀린 기본개념 (1)

ABL·2022년 9월 24일
0

다재다능코틀린

목록 보기
1/6
post-custom-banner

학교 도서관 앱을 뒤져보다가 우연히 발견한 [다재다능 코틀린 프로그래밍] !!

코틀린을 이용해서 안드로이드 앱 개발 프로젝트는 꽤나 오랫동안 진행해봤지만, 코틀린 실력이 아닌 구글링 실력만 계속 늘고 있다고 생각이 들었다. 그래서 새로운 마음으로 코틀린을 처음부터 다시 공부해보자는 각오를 다지며 이 책으로 공부해보고자 한다!

코틀린 관련 서적을 총 세 권 빌렸는데,
1. (코틀린을 활용한) 안드로이드 프로그래밍
2. 다재다능 코틀린 프로그래밍
3. 이펙티브 코틀린
이 세 권이 가장 좋을 것 같아 선택하였다.

1번 서적은 아무래도 코틀린을 한 번도 접해보지 못한 극 초심자가 읽기 좋은 듯 하였고, 나는 아는 내용이 대부분이었기 때문에 빠르게 훑고 넘어갔다.

그리고 지금 2번 다재다능 코틀린 프로그래밍을 막 펼쳐봤는데, 아무래도 모르는 내용이 꽤 있는 듯 해서 정리해보고자 벨로그를 켰다.

이런 류의 글을 잘 안써보기도 했고, 상당히 어색하기 때문에 정리 또한 가독성이 그닥 좋지는 않을 것 같다. 점점 하다 보면 늘지 않을까 싶당

1-1 코틀린을 사랑할 수 밖에 없는 이유 챕터는 코틀린의 장점 및 설치방법 등을 설명하고 있기에 우선 건너뛰었다. 또한, 2-1 / 2-2 도 기존에 아는 내용이었기에 생략한다.

2-3 var보다는 val

mutability(변경 가능성)은 코드를 추론하기 어렵게 만든다. 오류가 발생할 가능성이 높다.

하지만 val은 변수나 참조만 상수로 만들어서, 객체를 상수로 만드는 것은 불가능하다,

참조에 대한 immutability만 보장, 객체의 변화는 방지할 수 없다.

ex> String - immutable, StringBuilder - mutable
val message = StringBuilder("hello") -> message는 이뮤터블이지만, 참조하는 객체가 그 변수를 이용해서 변경됨

2-4 향상된 동일성 체크

코틀린의 '=='는 자바의 equals()보다 null 참조에 있어서 안전함
코틀린에서 == 연산자를 사용할 때, null 체크를 먼저 하고 equals() 메소드를 실행!

2-5 문자열 템플릿

  • 연산자를 이용해서 값을 연결하면 문자열은 장황해지고, 유지 보수는 어려워짐!
    -> 문자열 템플릿은 이 문제를 우아하게 해결해준다
  • 함수에 있는 변수는 scope 밖에서 binding, 문자열 템플릿은 출력될 때가 아니고 만들어질 때 사용됨
    	>> 이런 종류의 차이들이 인지 부하를 증가시키고 코드 유지보수를 어렵게 만든다

2-6 RAW 문자열

이스케이프 문자를 사용하면 코드가 지저분해짐 -> 시작과 끝에서 큼 따옴표를 세 개 이용해 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챕터에서는 자바와 코틀린의 차이를 기준으로 설명하는 것 같은데 꽤 설명이 잘 되어있는 것 같다. 자바를 먼저 접한 사람이라면 전혀 문제될 부분이 없어보인다.

profile
💻
post-custom-banner

0개의 댓글