본문 바로가기

Kotlin7

[Kotlin] StateFlow: Android 상태 관리를 위한 필수 도구 오늘은 Kotlin의 `kotlinx.coroutines.flow`에서 제공하는 강력한 상태 관리 도구인 StateFlow에 대해 알아보려고 해요. 이 글을 통해 `StateFlow`의 개념부터 실제 활용 사례까지 자세히 살펴볼게요.1. StateFlow란 무엇인가요?`StateFlow`는 `kotlinx.coroutines.flow`에서 제공하는 특별한 종류의 `Flow`로, 상태 관리에 최적화된 Hot Stream이에요. 항상 현재 상태를 보유하며, 상태가 변경될 때 구독자들에게 이를 알리는 데 사용돼요.특히 Jetpack Compose와 같이 상태 기반의 UI 프레임워크에서 유용하게 활용할 수 있어요. 뷰모델에서 상태를 관리하고, UI는 이를 구독해서 자동으로 상태를 반영하도록 설계할 때 적합해요... 2024. 11. 15.
[Kotlin] 언더스코어(_)를 변수 이름에 붙이는 이유 프로그래밍을 하다 보면 변수 이름 앞에 언더스코어(_)가 붙어 있는 걸 볼 수 있을 거예요. 이게 왜 필요한지 궁금할 수 있는데, 사실 이 언더스코어는 코드의 가독성을 높이고 관리하기 쉽게 만드는 데 도움을 줘요.1. 가시성 관리 프로그래밍에서 가시성은 어떤 코드가 어디에서 보이고 접근할 수 있는지를 뜻해요. 때로는 특정 변수들이 클래스나 함수 내부에서만 보이고, 외부에서는 접근하지 못하게 해야 할 때가 있어요. 이럴 때 언더스코어를 붙이면, "이 변수는 내부에서만 쓰이고, 외부에서는 보이지 않도록 하자"라는 신호를 주는 거예요. 2. 내부 상태 변수 표시프로그램에는 내부적으로 처리되는 데이터와, 외부에 보여주는 데이터가 있어요. 예를 들어, 앱에서 할 일 목록을 관리한다고 해봅시다. 이 목록을 내부적으.. 2024. 9. 3.
[Android] 발생할 수 있는 Exception종류와 처리 방법 안녕하세요. 개발을 하다 보면 다양한 예외 상황에 직면하게 돼요. 이러한 예외는 프로그램의 흐름을 방해하고 예상치 못한 종료를 초래할 수 있기 때문에, 각 예외의 특성을 이해하고 적절히 처리하는 것이 중요해요.오늘은 개발 중 자주 발생하는 Exception과 그 처리 방법에 대해 알아볼게요.1. NullPointerException NullPointerException은 null 객체의 속성이나 메서드를 호출하려고 할 때 발생해요. Kotlin은 기본적으로 null-safety를 지원하지만, 자바 라이브러리와의 상호작용 등으로 인해 발생할 수 있어요. val str: String? = nullval length = str!!.length // NullPointerException 발생 이를 방지하기 위해.. 2024. 6. 14.
[Kotlin] Coroutine Suspend function 사용자 경험을 개선하고, 애플리케이션의 성능을 최적화하기 위해서는, 네트워크 요청, 데이터베이스 작업, 파일 I/O 등의 작업을 비동기적으로 처리해야 해요. Kotlin에서 비동기 프로그래밍을 지원하기 위해 suspend 함수와 코루틴을 제공해요. 오늘은 Kotlin의 suspend 함수가 무엇이고, 어떻게 사용되는지, 그리고 이를 사용함으로써 얻을 수 있는 장점에 대해서 알아볼게요.Kotlin의 Suspend 함수란?Kotlin에서 suspend 키워드가 붙은 함수는 코루틴 내에서 실행되며, 실행을 중단(suspend)하고 재개(resume)할 수 있는 "중단점(suspension point)"을 가져요. 이 중단점을 통해, suspend 함수는 실행 중에 다른 코루틴으로 제어를 양보할 수 있고, 비동.. 2024. 3. 25.
[Kotlin] Data class, Sealed class Data class : 데이터를 보유하고 있는 간단한 클래스를 정의할 때 사용 Sealed class : 상태를 효율적으로 관리하고 특정 유형의 클래스 계층을 제한하여 안정성을 높이는 데 사용 Data classes(데이터 클래스) 주로 데이터를 보관하는 데 사용 equals(), hashCode(), toString(), copy() 메서드를 자동으로 생성합니다. 상속 불가 data class Person(val name: String, val age: Int) fun main() { val person1 = Person("Alice", 30) val person2 = Person("Alice", 30) println(person1 == person2) // 출력: true println(person1.. 2024. 3. 6.
[Kotlin] Scope functions(let, run, with, apply, also) Scope function(범위 지정 함수)은 객체의 컨텍스트에서 코드 블록을 실행하고 해당 객체를 참조할 수 있는 함수 let, run, with, apply, also 함수 수신 객체 반환 값 확장함수 여부 let it 람다 O run this 람다 O with this 람다 X apply this 객체 O also it 객체 O let nullable한 객체를 안전하게 처리할 때 주로 사용 객체가 null이 아닌 경우에만 코드 블록이 실행 val strNull: String? = null val str: String? = "Hello" val lengthNull = strNull?.let { //실행 안 됨 println("let() called on $it") processNonNullString.. 2024. 3. 5.
[Kotlin] object, companion object object : 단일 인스턴스를 관리하거나 특정한 동작을 수행할 때 사용 companion object : 클래스 내에서 정적으로 동작하는 메서드나 변수를 제공할 때 사용 Object 사용 사례 싱글톤 패턴을 구현할 때 사용됩니다. 클래스의 단일 인스턴스를 생성하고 해당 인스턴스를 여러 곳에서 접근할 수 있습니다. 객체 생성이 필요 없는 유틸리티 메서드를 제공할 때 사용됩니다. 이름이 있는 객체를 정의하여 특정한 동작을 수행하고자 할 때 사용됩니다. 특징 클래스 내부에 정의되며, 해당 클래스의 인스턴스가 단 하나만 존재합니다. 싱글톤으로 동작하며, 클래스의 인스턴스 생성 없이 사용됩니다. 멤버 변수와 메서드를 가질 수 있습니다. 사용 예시 object Singleton { var count: Int = .. 2024. 3. 5.