책/Effective Kotlin

책/Effective Kotlin

[이펙티브 코틀린] 아이템16: 프로퍼티는 동작이 아니라 상태를 나타내야 한다

본문은 Effective Kotlin을 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 1. 코틀린의 프로퍼티 vs 자바의 필드 둘 다 데이터를 저장한다는 공통점이 있지만, 다음과 같은 차이가 있다. 1) 자바 필드는 "데이터" 자체를 의미한다. 데이터를 실제로 저장하거나 접근하기 위해선 getter와 setter를 추가적으로 선언해줘야 한다. 2) 프로퍼티는 개념적으로 접근자를 나타낸다. 추가적으로 프로퍼티는 필드보다 확장된 개념, 즉 프로퍼티 = 필드(Optional) + 접근자이다. val의 경우 getter, var의 경우 getter와 setter를 나타낸다. 이러한 이유로 인터페이스에서도 다음과 같이 프로퍼티를 정의할 수 있다..

책/Effective Kotlin

[이펙티브 코틀린] 아이템9: use를 사용하여 리소스를 닫아라

본문은 Effective Kotlin을 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 1. use를 사용하여 Closeable 리소스 닫기 close 메서드를 사용해서 명시적으로 닫아야 하는 리소스들이 있다. InputStream / OutputStream java.sql.Connection java.io.Reader(FileReader, BufferedReader, CSSParser) java.new.Socket과 java.util.Scanner 위 친구들은 AutoCloseable을 상속받는 Closeable 인터페이스를 구현하고 있다. Closeable의 구현체들은 반드시 close()를 호출해서 리소스를 반납해줘야 하는데, 이는..

책/Effective Kotlin

[이펙티브 코틀린] 아이템8: 적절하게 null을 처리하라

본문은 Effective Kotlin을 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 1. nullable 타입 처리하기 nullable 타입은 크게 다음과 세 가지 방법으로 처리할 수 있다. 1) Safe Call 연산자(?.), 스마트 캐스팅, Elvis 연산자 등을 활용한 처리 val printer: Printer? = getPrinter() printer?.print() // safe call operator if (printer != null) printer.print() // 스마트 캐스팅 printer ?: return // Elvis operator 2) 리팩토링을 통해 nullable 타입이 나오지 않도록 하기 // B..

책/Effective Kotlin

[이펙티브 코틀린] 아이템7: 결과 부족이 발생할 경우 null과 Failure를 사용하라

본문은 Effective Kotlin을 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 1. 예외는 반드시 예외적인 상황에서만 사용하라 함수가 원하는 결과를 만들어 내지 않는 상황이 있다. 이럴 때는 보통 다음 두 가지 중 하나를 선택하게 된다. 책에서는 첫 번째 방법을 권고한다. null 또는 실패를 나타내는 sealed class(=Failure)를 반환한다 → 이것을 사용하라! 예외를 throw한다 예외를 throw 하는 것은 다음과 같은 단점이 있다. 디버깅이 까다롭다 사용자가 예상치 못한 동작이 발생할 수 있으며, 이것이 문서로 드러나지 않을 수 있다 try-catch(또는 runCatching)를 사용하면 가독성이 떨어지고 유..

책/Effective Kotlin

[이펙티브 코틀린] 아이템5: 예외를 활용해 코드에 제한을 걸어라

본문은 Effective Kotlin을 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 1. 제한의 의미와 장점 반드시 특정 흐름으로 코드가 동작해야 한다면 예외를 활용해 제한을 걸어줄 수 있다. 제한을 걸면 다음과 같은 장점이 있다. 제약사항을 쉽게 확인할 수 있다 예상치 못한 동작을 하기에 앞서 예외를 throw한다 (= 안전한 애플리케이션이 된다) 코드를 잘못 쓰는 상황을 막을 수 있다 스마트 캐스트 기능을 활용할 수 있다 2. 아규먼트 require 블록을 사용하면 아규먼트를 제한할 수 있다. fun factorial(n: Int): Long { require(n >= 0) return if (n = 0) { "Cannot ca..

코택
'책/Effective Kotlin' 카테고리의 글 목록 (2 Page)