본문 바로가기
[coroutine] runBlocking 에 대해 알아보자 - runBlocking 은 새로운 coroutine 을 수행하면서 현재 thread 를 interrupt 가능한 상태로 block 시킨다. 그리고 이 block 은 coroutine 이 종료될때까지 유지된다. - 이 함수는 coroutine 안에서는 사용되지 않아야 한다. (should not) runBlocking 함수는 main 함수 또는 test 에서, blocking style 이면서, suspending style 로의 넘어가기 위한 bridge 의 역할로 사용되도록 디자인 되었다. - 만약 다른 context 가 지정이 된다면, 지정된 context 에서 coroutine 이 수행되고, runBlocking 을 호출한 thread 는 block 된다. - runBlocking 에서 발생하는 .. 2023. 1. 9.
[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.
반응형