Kotlin

· Kotlin
아이템 11: 가독성을 목표로 설계하라 프로그래밍은 쓰기보다 읽기가 더 중요하다. 따라서 항상 가독성을 생각하며 코드를 작성해야 한다. 인식 부하 감소 // 구현 A if(person != null && person.isAdult) { view.showPerson(person) } else { view.showError() } // 구현 B person?.takeIf { it.isAdult } ?.let(view::showPerson) ?: view.showError() 구현 B는 짧지만 이해하기 어려움 일반적으로 코틀린에서 사용되는 관용구가 많아 경험이 많은 코틀린 개발자라면 쉽게 이해 가능 but, 숙련된 개발자만을 위한 코드는 좋은 코드가 아님 구현 A는 수정이 쉬움 if 블록에 작업 추가할 경우 ..
· Kotlin
코틀린은 정말 안전한 언어지만, 정말로 안전하게 사용하려면 개발자가 뒷받침을 해야 합니다. item 1. 가변성을 제한하라 코틀린 프로그램은 모듈로 이루어져 있다. 모듈의 대표적 종류는 다음과 같다. 클래스 객체 함수 타입 별칭 top-level 프로퍼티 가변을 지양할 이유 모듈 중 var 프로퍼티나 mutable 객체는 상태를 가질 수 있는데 이는 생산성을 높여주지만 여러 문제점을 갖는다. 상태를 갖는 부분들의 관계를 이해해야 함. 상태를 갖는 부분이나 변경 부분이 많을수록 이해하기 어려워짐 시점에 따라 바뀌는 상태를 가지면 실행을 예측하기 힘듬. → 테스트 하는 것도 어려움 멀티스레드 프로그램일 경우 충돌이 발생할 수 있음 변경이 일어날 때마다 다른 부분에 알려야 할 경우가 있음 class Roule..
· Kotlin
목차 TestCoroutineScheduler StandardTestDispatcher UnconfinedTestDispatcher TestScope runTest 백그라운드 스코프 취소와 컨텍스트 전달 테스트하기 디스패처를 바꾸는 함수 테스트 함수 실행 중 일어나는 일 테스트 새로운 코루틴을 시작하는 함수 테스트 메인 디스패처 교체하기 룰이 있는 테스트 디스패처 설정하기 코틀린 코루틴 테스트 | Built with Notion suspend fun test1(): User { val profile = repo.getUserProfile() val friends = repo.getFriends() return User(profile, friends) } suspend fun test2(): User { ..
· Kotlin
목차 Hot & Cold 데이터 소스 핫 채널, 콜드 플로우 플로우란? 다른 방법들과 비교 플로우 특징 플로우의 실제 구현 Flow 이해하기 Flow 처리 방식 동기 Flow 플로우와 공유 상태 플로우 생성 원시 값을 가지는 플로우 컨버터 함수를 플로우로 변경 플로우와 리액티브 스트림 플로우 빌더 빌더의 원리 채널 플로우 플로우 생명 주기 함수 Flow | Built with Notion Hot & Cold 데이터 소스 dongbin-note.notion.site
· Kotlin
목차 닫힌 채널에서 Select 편향 특성을 이용한 onSend 지연되는 값 선택 Select | Built with Notion Select 표현식은 아직 실험적인 기능으로 동작이 변경되거나 하위 호환 제공이 안될 수도 있다. dongbin-note.notion.site
· Kotlin
목차 Channel type Channel.UNLIMITED Channel.BUFFERED Channel.RENDEZVOUS Channel.CONFLATED 버퍼 오버 플로우일 때 전달되지 않은 원소 핸들러 Fan-out Fan-out 수신 시 수신 방식에 따라 오류 전파 동작이 다른 이유 Fan-in Channel | Built with Notion 채널은 코루틴끼리 통신을 위한 api이다. dongbin-note.notion.site
· Kotlin
목차 싱글 스레드로 제한된 Dispatcher 코스 그레인드 한정 파인 그레인드 한정 Atomic 타입 활용 선호되는 순서 공유 상태로 인한 문제 | Built with Notion 아래 코드는 멀티 스레드 환경에서 문제가 발생한다. dongbin-note.notion.site
· Kotlin
디스패처 종류 기본 디스패처 (Dispatchers.Default) 메인 디스패처 (Dispatchers.Main) IO 디스패처 (Dispatchers.IO) 사용 가능한 디스패처 갯수 제한하기 커스텀 스레드풀 커스텀 스레드풀을 사용하는 IO 디스패처 정해진 수의 스레드 풀을 가진 디스패처 프로젝트 룸의 가상 스레드 사용하기 더 알아보기 제한받지 않는 디스패처 (Dispatchers.Unconfined) Continuation Interceptor 디스패처 성능 디스패처 | Built with Notion 코루틴이 실행되어야 할 스레드는 디스패쳐를 통해서 결정할 수 있습니다. dongbin-note.notion.site
· Kotlin
목차 coroutineScope coroutineScope 특징 코루틴 빌더와 코루틴 스코프 함수 차이 runBlocking과의 차이 withContext supervisorScope withTimeout 코루틴 스코프 함수 | Built with Notion 여러 중단 함수를 동시에 실행하려면 각각 GlobalScope.async로 래핑해야 하지만 GlobalScope를 사용하는 방법은 선호되는 방법이 아니다. dongbin-note.notion.site
· Kotlin
개요 코루틴에서 잡히지 않는 예외가 발생했을 때 종료된다. 이 페이지에서는 이럴 경우 예외 처리를 어떻게 할 수 있을 지 알아본다. 목차 코루틴 빌더 별 예외 발생 상황 코루틴 예외 전파 멈추기 SupervisorJob 활용법 SupervisorScope 활용법 CancellationException 활용 async 빌더에서 예외 발생할 경우 예외 처리 | Built with Notion 개요 dongbin-note.notion.site
dongb
'Kotlin' 카테고리의 글 목록