피드로 돌아가기
Stop Fighting Your State. Reduce And Conquer It.
Dev.toDev.to
Frontend

Pure Function 기반 Reducer 도입을 통한 State 및 Side-effect 관리 최적화

Stop Fighting Your State. Reduce And Conquer It.

numq2026년 5월 13일4intermediate

Context

MVVM의 분산된 MutableStateFlow로 인한 상태 관리 복잡성 및 MVI의 비표준적 Side-effect 처리 방식이 개발 생산성을 저해하는 한계 노출.

Technical Solution

  • State, Event, Effect를 통합 관리하는 Transition 구조 설계를 통한 상태 전이 일원화
  • Side-effect를 First-class citizen으로 정의하여 Action, Stream, Cancel로 세분화한 Effect 인터페이스 구현
  • Reducer를 Pure Function으로 설계하여 ViewModelScope 의존성을 제거하고 상태 변경 로직을 캡슐화
  • Key 기반의 Effect 취소 메커니즘을 통한 메모리 누수 방지 및 자동 리소스 관리
  • View의 Command 전송과 Reducer의 Transition 반환으로 이어지는 단방향 데이터 흐름(UDF) 확립

- ViewModel 내 MutableStateFlow 개수가 증가하는지 확인 - Side-effect 처리 로직이 프로젝트마다 상이한지 검토 - 비즈니스 로직 테스트 시 Coroutine Mocking 비용이 과다한지 분석 - 상태 전이 로직을 Pure Function으로 분리하여 테스트 가능성 확보

원문 읽기