본문은 Effective Kotlin을 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 컬렉션 처리 메서드는 각각의 단계에서 추가적인 컬렉션을 만들어낸다. 시퀀스로 처리한다 하더라도 추가적인 객체를 만들어낸다. 따라서 적절한 메서드를 사용해서 컬렉션 처리 단계 수를 적절하게 제한하는 게 좋다. // Soso fun List.getNames(): List = this .map { it.name } .filter { it != null } .map { it!! } // Better fun List.getNames(): List = this .map { it.name } .filterNotNull() // Best fun List.getNam..
본문은 Effective Kotlin을 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 1. 확장 함수의 특징 1) *확장 함수는 import를 통해 사용할 수 있다 확장 함수는 멤버와 달리 별도의 import가 필요하다 이러한 이유로 대개 다른 패키지에 위치한다 직접 멤버를 추가할 수 없는 경우에 사용하기 유용하다 2) 멤버 함수보다 우선순위가 낮다 위에서 언급한 import해서 사용한다는 특징 때문에 같은 타입에 같은 이름으로 여러 개 만들 수 있다 같은 이름으로 다른 동작을 하는 확장 함수가 존재하는 것은 위험할 수 있다 이러한 위험 가능성이 있다면 확장 함수 대신 멤버 함수를 사용하는 것이 좋다 멤버 함수는 확장 함수보다 우선순위..
본문은 Effective Kotlin을 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 1. compareTo의 동작원칙 비대칭적 동작: a >= b 이고, b >= a라면, a == b 연속적 동작: a >= b이고, b >= c라면, a >= c 코넥스적 동작: a >= b 또는 b >= a 중에 적어도 하나는 항상 true 2. compareTo의 대안 기본적으로 compareTo를 따로 정의해야 할 상황은 거의 없다. compareTo를 재정의하는 대신, 간단하게 다음의 함수를 이용해서 순서를 지정할 수 있다. sortedBy: 하나의 프로퍼티를 기반으로 순서를 지정할 때 사용 sortedWith: 하나의 프로퍼티를 기반으로 순서..
본문은 Effective Kotlin을 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 1. 프로퍼티 위임이란? 1) 의미 다른 객체의 메서드를 활용해서 프로퍼티 접근자(getter와 setter)를 만드는 것 쉽게 말해 다른 객체에게 프로퍼티의 접근 구현을 맡기는 것 2) 효과 일반적인 프로퍼티의 행위를 추출해서 사용할 수 있다 프로퍼티 접근 로직을 재활용하는 데 그 의의가 있다 2. 사용하는 방법 프로퍼티 위임을 사용할 땐 위임을 받은 객체의 메서드 이름이 중요한데, getter는 getValue, setter는 setValue 함수를 이용하여 정의해야 된다. 그리고 객체를 만든 뒤엔 by 키워드를 사용해서 클래스를 연결시켜줘야 한다..
본문은 Effective Kotlin을 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 책에서는 아규먼트라고 나왔지만, 이름 있는 아규먼트(Named Argument)보다는 이름 있는 파라미터(Named Parameter)가 더 보편적인 표현이므로 본문에서는 해당 단어를 사용하고자 한다(사실 책에서도 혼용해서 사용한다..). 1. 이름 있는 파라미터의 장점 1) 값이 어떤 의미를 지니는지 명확하게 표현할 수 있다 // 각각의 아규먼트가 어떤 의미를 지니는지 불명확함 listOf("John", "Tom", "Paul").joinToString(",", "Class:", "!!") // 보다 명확하게 의미를 파악할 수 있음 listOf("J..