최근에 kotlin + aac 로 안드 개발을 하였고, 개발 도중 여러가지 드는 생각과 질문들을 이곳에 우선 적어볼까한다. 내가 직접 실험하고 비교분석할 순있지만 이미 kotlin + aac 개발을 많이 해온 사람들이 충분히 있다고 생각되기에 검색으로 쉽게 해답을 얻기를 기대해 본다.
- UI가 top, middle, bottom으로 분리되어 있고 ViewModel이 monolithic하게 되는걸 방지하고자 1 Fragment, 3 ViewModel을 만들경우 Fragment는 3개의 ViewModel에 의존성이 생기게 되는데. top, middle, bottom에 대응하는 UIModel을 제공하는 ViewModel 3개를 만들고 이 세개의 ViewModel을 field로 갖고 View(Acitivity, Fragment)에는 이 ViewModel하나에만 의존하도록 하는건 어떨까? 그러면 View는 ViewModel 하나에만 의존하게 되고 ViewModel 3개와 이를 field로 같는 ViewModel은 parent-child 계층 구조로 설계하면 View 입장에서는 interface가 간편해지고 ViewModel을 선택해서 특정 요청을 해야할지 고민할 필요가 없을것 같다. 간단한 코드 샘플로 비교해 보면 좀더 명확해 질거 같은데? 근데 ViewModel builder function이 Fragment, Activity에 있네;;;;
- liveData() extension function으로 LiveData<T> 를 만들고 emit(), emitSource(), LiveData<T>.switchMap() 를 활용하는 방법이 코드 라인을 몇줄더 절약 가능한 방법인거 같은데. 아직 liveData() 함수 사용에 대한 이해도가 낮으니 좀더 공부해 봐야겠다.
# LiveData.switchMap() 을 사용하는 예제
https://gist.github.com/JoseAlcerreca/f2f2743ccd933f701a93beb00973e679#file-myviewmodel-kt
# LiveData.switchMap() 을 사용하지 않고 Flow을 사용하는 예제. Flow가 더 많은 operation을 제공하고 코드도 간결해 보인다.
https://gist.github.com/JoseAlcerreca/9a17b1faf1c76bd9ba35e15901f964c5#file-myviewmodel-kt
- kotlin에 Pair<T, V>, Triple<A, B, C>는 있는데, 4, 5, 6 field를 같는 data class가 필요하면 naming 규칙 만들어서 팀원들과 쓰자고 해야겠다.
-
'android' 카테고리의 다른 글
Firebase (0) | 2016.06.11 |
---|---|
Android N Preview 대응 (0) | 2016.06.04 |
RecyclerView에 Endless Scrolling(무한 스크롤)을 구현해 보자 (0) | 2016.03.23 |
ButterKnife를 왜 쓰냐구요? (0) | 2016.02.29 |
뭐? 이벤트? 버스 태워 보내! #2 (0) | 2016.02.29 |