31. data class 하나로 만들기
장점
- data class 특성을 이용할 수 있다
- 부분적인 업데이트가 편리하다
- 상태에 필요한 로직을 클래스에 위임할 수 있다
단점
- 하나의 상태만 변경해도 모든 곳에 전파된다
(데이터 바인딩? 이해도와 숙련도)
- 클래스로 분리하기 위한 설계 능력 요구
48. sealed class로 상태 분리하기
장점
- sealed class
- 표현하고자 하는 상태가 클래스와 1:1 대응된다
- 가독성이 좋다
단점
- 상태의 복잡도와 클래스 개수가 비례한다
- 화면 전체를 만드는 경우보다 아이템 상태를 만드는데 유리하다
- xml로 할 경우 커스텀 뷰로 만들거나 복잡한 바인딩 어댑터가 요구될 수 있음
57. 장점
- 시스템을 만들기 좋다
- 보일러 플레이트 코드를 줄일 수 있다 (가독성이 좋다?)
- 아키텍쳐와 같이 사용할 수 있다
ex) https://github.com/airbnb/mavericks(매버릭스), TCA 아키텍쳐 등
단점
- 구현 난이도가 높다!!
- 시스템과 약간만 달라져도 대응하기 어려워 진다
- 사용하기 위해서는 반드시 팀을 설득해야 한다
UiState 일반화하기