본문 바로가기
[Effective Kotlin] Dictionary 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. Function vs method # function 은 "fun" keyword 로 시작하고, top-level, member, local function 으로 정의가 가능하다. # method 는 class 에 연관된 function 을 이야기한다. 다시 말하면 이 함수를 부르기 위해서는 연관된 class 이름이 필요한 경우가 method 이다. 논란의 여지가 조금 있지만 extension function 도 method 로 본다. Extension vs member Param.. 2022. 6. 14.
[Effective Kotlin] Item 52: Consider using mutable collections 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # mutable collection 을 쓰는 가장 큰 장점은 modification 이 발생할 때, immutable collection 대비 더 빠르다는 것이다. Summary 끝 2022. 6. 13.
[Effective Kotlin] Item 51 : Consider arrays with primitives for performance-critical processing 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # IntArray, LongArray 등을 사용해서 primitive 를 사용하도록 하자. 이는 메모리와 성능 두기지 관점에서 모두 이득이다. # 일반적으로 List 등이 더 직관적이며 잘 쓰인다. 따라서 IntArray, LongArray 등은 최적화가 필요한 부분에서 사용하도록 하자. Summary 끝 2022. 6. 12.
[Effective Kotlin] Item 50: Limit the number of operations 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # collection 에 대한 operation 은 sequence 라 해도 heavy 할 수 있다. 따라서 다음 함수들로 복수개의 operation 을 줄여 쓸 수 있다. filterNotNull() mapNotNull{ } joinToString{ } filter{ && } filterIsInstance() sortedWith( compareBy({ }, { }) ) listOfNotNull(...) filterIndexed{ index, elem -> } // ... Sum.. 2022. 6. 11.
[Effective Kotlin] Item 49: Prefer Sequence for big collections with more than one processing step 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # Iterable 과 Sequence 를 동일한 것으로 보기 쉽다. 하지만 Sequence 는 lazy 하게 작동하며, terminal operation 을 만나면 작동한다. 반면 Iterable 은 중간과정에서 collection 을 계속 만들어낸다. # sequence 를 사용함으로써 갖는 장점은 아래와 같다. 자연적인 순서를 보장한다. 최소한의 작업을 한다. 무제한이 가능하다. 매번 collection 을 만들지 않는다. Order is important # sequence.. 2022. 6. 10.
[Effective Kotlin] Item 48: Eliminate obsolete object references 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # 미사용 object 에 대해 null 을 세팅해주자. function type 의 경우 variable capture 효과가 있으므로 더 유용하다. # state 를 갖게 되면 항상 메모리 관리를 신경써야 한다. # 가독성 좋은 코드가 일반적으로 메모리 릭에도 안전한 편이다. 읽기 어려운 코드가 메모리 릭을 더 못 발견하게 하며, CPU 도 낭비하곤 한다. 그러므로 가독성 좋은 코드를 작성하도록 하자. # Cache 를 사용할 때는 SoftReference 를 잘 활용하도록 하.. 2022. 6. 9.
[Effective Kotlin] Item 47: Consider using inline classes 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # function 뿐만 아니라 single value 를 가진 class 도 inline 될 수 있다. class 앞에 value 을 붙여주면 된다. (돼왕 : 책에는 inline 으로 나오지만, inline modifier 는 deprecated 되고 value 로 변경되었다. value class Name(private val value: String){ /../ } # value class 안에 있는 함수들은 static method 로 치환된다. # 일반적으로 value .. 2022. 6. 8.
[Effective Kotlin] Item 46 : User inline modifier for functions with parameters of functional types 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # inline modifier 를 붙여주면 컴파일 단계에서 호출하는 부분을 inline 이 정의된 구현으로 변경해준다. 이 동작은 아래의 장점을 가진다. type argument 가 reified 될 수 있다. 더 빠른 수행이 된다. non-local return 이 허용된다. 물론 단점도 있는데 이는 나중에 알아본다. A type argument can be reified # Java 가 처음부터 generic 을 가지고 있던 게 아니었다. J2SE 5.0 버전과 함께 2004.. 2022. 6. 7.
[Effective Kotlin] Item 45: Avoid unnecessary object creation 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # 동일 내용의 string literal 과 값이 작은 Boxed primitive 는 동일 JVM 안에서 재사용된다. (Integer cache 는 -128~127 의 숫자를 들고 있다.) # Int? (nullable) primitive type 은 null 을 받아들여야 하기 때문에 Integer 로 사용되고, Int 의 경우 primitive int 가 사용된다. Is object creation expensive? # Objects 는 추가 공간을 점유한다. 64-bit.. 2022. 6. 6.
반응형