Skip to content

3. 상태, 이벤트, 부수 효과

kimdohun0104 edited this page Oct 18, 2020 · 1 revision

상태, 이벤트, 부수 효과

상태와 이벤트 그리고 부수 효과는 MVI 패턴에서 필수적인 개념입니다.

  1. 상태: 프로그램의 상태를 나타내며, 현재 상태를 통해서 화면을 렌더링합니다.
  2. 이벤트: 상태를 변경할 수 있는 유일한 방법이며, intent()를 통해 발생시킬 수 있습니다.
  3. 부수 효과: 네트워크 호출, 로컬 데이터베이스 등 결과를 예측할 수 없는 활동을 말합니다.

이 3가지 요소는 아래의 형태로 정의할 수 있습니다.

상태

data class CountState(
    val count: Int = 0
) : KindaState

Kinda의 상태는 반드시 불변성을 가져야 합니다.
이는 부수 효과로부터 프로그램을 안전하게 보장하고, 데이터의 추적성을 향상시켜 디버깅과 유지보수에 도움을 줍니다.

이벤트

sealed class CountEvent : KindaEvent {
    object AttemptRequestCount : CountEvent()
    data class SetCount(val count: Int) : CountEvent()

    object Increase : CountEvent()
    object Decrease : CountEvent()
}

Kinda에서 상태를 변경하기 위해선 이벤트를 발생시켜야 합니다.
이벤트는 sealed class를 사용하여 안전하게 관리되고, when을 사용할 때 이점을 볼 수 있습니다.

부수 효과

sealed class CountSideEffect : KindaSideEffect {
    data class RequestCount(val userId: Int) : CountSideEffect()

}

마찬가지로 sealed class를 사용합니다.