Upgrade to Pro — share decks privately, control downloads, hide ads and more …

UI State Modeling 어떤게 좋을까?

UI State Modeling 어떤게 좋을까?

Afcab07a7473e163949d85424a81cb85?s=128

Youngjik Yoon

May 14, 2022
Tweet

Other Decks in Programming

Transcript

  1. UI State Modeling 윤영직 | PRND 컴퍼니 안드로이드 개발자 어떤게

    좋을까?
  2. ViewModel에서 UI State를 어떻게 처리하고 있나요?

  3. UI State? 앱에서 사용자에게 표시하는 정보 사용자가 보는 항목이 UI라면

    UI 상태는 앱에서 사용자가 봐야 한다고 지정하는 항목 isLoading = true “홍길동” name = “홍길동”
  4. UI State? 쉽게 생각해서 우리가 ViewModel에서 만드는 그 코드들

  5. 공식문서 코드랩 블로그 우리회사 다른회사 프로젝트 코드를 볼 때마다 방법이

    모두 다르다!! sealed class data class
  6. https://github.com/laco-dev/sample-StateModeling

  7. None
  8. UI State 여러개로 처리하기

  9. None
  10. None
  11. None
  12. None
  13. None
  14. None
  15. None
  16. None
  17. None
  18. None
  19. 장점 - 각자의 상태가 서로 영향을 주지 않는다 - 코드

    작성 난이도가 다소 쉽다 단점 - 변경을 누락해서 개발자 실수로 이어지기 쉽다 - 특정 이벤트가 어떤 상태 변화를 만드는지 파악이 어렵다 - 코드 가독성이 안좋다 UI State 여러개로 처리하기
  20. data class 하나로 만들기

  21. None
  22. None
  23. None
  24. None
  25. None
  26. None
  27. None
  28. None
  29. None
  30. None
  31. data class 하나로 만들기 장점 - data class 특성을 이용할

    수 있다 - 부분적인 업데이트가 편리하다 - 상태에 필요한 로직을 클래스에 위임할 수 있다 단점 - 하나의 상태만 변경해도 모든 곳에 전파된다 (데이터 바인딩? 이해도와 숙련도) - 클래스로 분리하기 위한 설계 능력 요구
  32. sealed class로 상태 분리하기

  33. None
  34. None
  35. None
  36. None
  37. None
  38. None
  39. None
  40. None
  41. None
  42. None
  43. None
  44. None
  45. None
  46. None
  47. None
  48. sealed class로 상태 분리하기 장점 - sealed class - 표현하고자

    하는 상태가 클래스와 1:1 대응된다 - 가독성이 좋다 단점 - 상태의 복잡도와 클래스 개수가 비례한다 - 화면 전체를 만드는 경우보다 아이템 상태를 만드는데 유리하다 - xml로 할 경우 커스텀 뷰로 만들거나 복잡한 바인딩 어댑터가 요구될 수 있음
  49. UiState 일반화하기

  50. None
  51. None
  52. None
  53. None
  54. None
  55. None
  56. None
  57. 장점 - 시스템을 만들기 좋다 - 보일러 플레이트 코드를 줄일

    수 있다 (가독성이 좋다?) - 아키텍쳐와 같이 사용할 수 있다 ex) https://github.com/airbnb/mavericks(매버릭스), TCA 아키텍쳐 등 단점 - 구현 난이도가 높다!! - 시스템과 약간만 달라져도 대응하기 어려워 진다 - 사용하기 위해서는 반드시 팀을 설득해야 한다 UiState 일반화하기
  58. UiState 삼형제다 UiState 삼형제! data class 좋아하는 녀석 copy 함수

    못참지 sealed class 좋아하는 녀석 Base에 이것저것 넣어서 슈퍼클래스 만드는 녀석 코드 짧은게 좋아서… 정답은 없다 테스트 한 번 짜보세요
  59. ViewModel에서 UI State를 어떻게 처리하고 있나요?