(240529) Medium Daily Digest

Godomin·2024년 5월 28일

Medium-Daily-Digest

목록 보기
8/24

Enhancing Retrofit API Calls in Android Using Interceptors

https://medium.com/@riztech.dev/enhancing-retrofit-api-calls-in-android-using-interceptors-4c39433f1985

Retrofit 라이브러리에서 intercepter를 사용하여 로깅, 인증, 헤더 조작, 오류 처리 등의 기능을 구현할 수 있다. 클라이언트에 응답을 전달하기 전에 말 그대로 '가로채서' 처리를 하기 때문에 클라이언트 내부 코드에서 응답을 처리하는 것보다 더 견고하고 높은 보안 수준을 가질 수 있다.

  • Logging interceptor: 헤더, 파라미터, 페이로드 등 응답에 대한 로깅
  • Header interceptor: 헤더에 인증 메커니즘 구현, 메타데이터 첨부 등
  • Error handling interceptor: 재요청, 자동 토큰 갱신, 사용자 친화적 에러 메시지 보여주기 등
  • Custom interceptor: 요청/응답 수정, 데이터 캐싱, analytics tracking 등

When should you use StateFlow over LiveData in Android development?

https://medium.com/@sujathamudadla1213/when-should-you-use-stateflow-over-livedata-in-android-development-11e0030bf6c8

LiveData

2017년에 처음 소개된 AAC의 하나로 데이터가 변경될 때 observer에 알리는 lifecycle-aware data holder이다.
Configuration change에 대응할 때, 간편하면서 lifecycle 관리가 되는 방식이 필요할 때, 데이터베이스나 네트워크 응답 등 비정기적인 데이터 업데이트가 필요할 때 사용된다. 그러나 복잡하고 동시성이 필요한 작업에는 알맞지 않고 내장 에러 핸들러가 제공되지 않는다는 단점이 있다.

StateFlow

2020년에 Kotlin.coroutine 라이브러리의 일부로 소개되었다. Flow를 기반으로 하는 lifecycle-aware data holder이다.
복잡하고 동시성이 필요한 작업, reactive한 기능이 필요할 때 사용하면 좋고 내장 에러 처리를 지원한다. 그러나 coroutine과 flow에 대한 이해가 필요하다.

요즘은 코루틴도 많이 쓰이고 특히 컴포즈를 사용하는 프로젝트에서는 거의 stateFlow를 사용하는 것 같다.

Choosing Between Sealed Classes and Enum Classes in Kotlin

https://medium.com/@husayn.fakher/choosing-between-sealed-classes-and-enum-classes-in-kotlin-60b71948264c

EnumSealed Class
계층적 구조평면적 구조
동적이고 사용자 정의 가능유연성 부족
선언적 표현식 처리컴파일 타임 암시적 처리
상속 가능상속 불가

+ Sealed class vs Sealed interface
생성자에 매개변수가 필요한 경우가 아니라면 서버 응답 래퍼 클래스 등에는 sealed interface를 더 쓰는 것 같다.

0개의 댓글