1. Null 안전성 문제

2. 생명주기 무시

3. 반응성이 없어진다

// 해당 시점의 값만 가져옴 - 이후 변경 감지 불가
val data = viewModel.data.value

// observe 패턴을 사용한다면 변경에 반응
viewModel.data.observe(viewLifecycleOwner) { data ->
    // 자동으로 업데이트됨
}

4. Race Condition / 타이밍 문제


올바른 패턴

LiveData

viewModel.data.observe(viewLifecycleOwner) { value ->
    // 생명주기 안전 + 자동 구독 해제
    updateUI(value)
}

StateFlow (with repeatOnLifecycle)

viewLifecycleOwner.lifecycleScope.launch {
    viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
        viewModel.uiState.collect { state ->
            updateUI(state)
        }
    }
}