이펙티브 코틀린4 [Effective Kotlin] 아이템 49. 하나 이상의 처리 단계를 가진 경우에는 시퀀스를 사용하라 코틀린도 마찬가지로 Collection 처리를 위한 다양한 함수를 지원한다. 대표적으로 iterable 에서도 filter, map 등 동일한 함수를 지원하면서, 편리하게 사용할 수 있다. 하지만 지연 연산을 위해서는 자바와 같은 Stream, 코틀린에서는 Sequence를 사용하는 것이 좋다고 한다. 정리해보자. Iterable과 Sequence public inline fun Iterable.filter( predicate: (T) -> Boolean ): List { return filterTo(ArrayList(), predicate) } public fun Sequence.filter( predicate: (T) -> Boolean ): Sequence { return FilteringSeque.. 2023. 2. 4. [Effective Kotlin] 아이템 47. 인라인 클래스의 사용을 고려하라 이펙티브 코틀린을 거의 다 읽어 간다. 이펙티브 자바나 코틀린이나 백엔드에서 API를 설계하는 것 뿐만 아니라 특정 분야의 사용에 국한되지 않고, 언어 자체를 어떤식으로 작성해야 하는지를 알려주는 책이다. 나는 코틀린으로 라이브러리를 만들고 있지 않기 때문에, 백엔드 개발에 필요한 부분을 따로 되새기고자 특정 유용한 아이템들만 블로그에 정리한다. 따로 글로 정리하지 않은 나머지 챕터는 읽어가며 코틀린에 대해 더 깊은 이해를 하려 노력한다. Inline 한정자가 참 많이 나왔는데, 거의 고차 함수나 탑 레벨 함수에 많이 사용하는 것으로 학습했다. 성능적 부분에서 객체를 따로 생성하지 않고 함수 내부로 편입되기에 우수하므로, 인상 깊은 개념이었다. 톱레벨 함수나 고차 함수를 유틸리티 함수를 제외하면 Inli.. 2023. 2. 3. [Effective Kotlin] 아이템 36. 상속보다는 컴포지션을 사용하라 [이펙티브 자바] 를 읽었던 기억을 떠올렸을 때 '상속보다는 컴포지션을 사용하라' 라는 아이템이 상당히 인상 깊었다. 하지만 컴포지션 적용시키면서 다형성을 만족시키려면 인터페이스를 상속 받아야 하는데, 모두 구현해야 하므로 코드가 참 더러워지는 것을 확인할 수 있었다. 코틀린을 이를 기가 막히게 해결했다. 다시 상속과 컴포지션의 예를 살펴보고 이를 코틀린이 어떻게 간단히 해결할 수 있는지 살펴 보자. 상속의 문제점 모든 것을 가져올 수밖에 없음 슈퍼클래스의 상태, 메서드, 행위 등 모든 것을 가져온다. 계층 구조를 나타낼 때 굉장히 좋은 도구 그렇기에 일부분만을 사용하기에 부적합한 방법 이를 위해서 컴포지션을 사용한다. 캡슐화를 깨는 상속 내부적인 구현 방법의 변경으로 캡슐화가 깨진다. 컴포지션 슈퍼클래.. 2023. 1. 30. [Effective Kotlin] 아이템 32. 생성자 대신 팩토리 함수를 사용하라 자바를 공부하며 가장 의미 있게 읽은 책은 [이펙티브 자바]이다. 자바를 만든 개발자가 직접 집필한 책이므로, 자바를 자바답게 사용하는 방법이 아주 명확하게 설명되어 있다. 가장 첫 챕터인 '생성자 대신 팩토리 메소드를 사용하라'라는 아이템을 굉장히 의미 있게 읽게 되었고, 그 내용을 코드를 작성할 때 애용했었다. 코틀린도 자바의 이점을 그대로 가져간 언어이므로, 비슷하게 적용 되는 부분이 있을지를 생각해 봤다. 회사에 들어가서 코틀린을 배우고 코드를 작성하면서, 가장 눈에 띄었던 부분이 dto 객체를 매핑하는 부분이었고, 팩토리 메서드를 사용하면 어떨까라는 생각을 했다. 코틀린을 사용하는 분들과 구글링을 통해 자바와 동일하게 팩토리 메서드를 많이들 사용한다는 정보를 얻었고, 그대로 적용했었다. 이펙티브.. 2023. 1. 29. 이전 1 다음 반응형