mvvm- viewmodel too big

hankyulee·2023년 3월 13일
0

reactive programming - combine 사용하여 data flow centrallized
coordinator 사용하여 navigation flow관리, dependency inject 관리
Data - interface implementation같은 data 통신부분을 분리하여 viewmodel을 작게하였음, Improved separation of concerns: The coordinator pattern promotes a clear separation of concerns between view controllers, making it easier to manage and maintain complex navigation flows. 그래서 테스트에도 좋음

unit test에 유리했음

아래와 같은 방법을 적용해볼 필요가 있다. 이번 프로젝트에서 여러 뷰에서 중복으로 사용될 수 있는 메소드들이 많아 하나의 뷰모델로 관리해서 뷰모델이 비데해졌다. 특히나 feedviewmodel의 경우 비디오 UI에서 슬라이더를 움직였을때의 로직이 담겨있어 길어진 면도 있다. 이를 아래와 같이 새로운 클래스에서 관리 하는 방법도 있다.

  • 현재는 어떤뷰에서 다른뷰로 이동할때 뷰모델이 달라서 이동했음을 notify 해주는 구현이 어려웠다. 특히나, 단순 '뒤로가기' 할때이기때문에, 더욱 어려웠다. 그래서 notification center클래스를 이용했다.

  • 또한 FeedViewmodel에서 현재 상태를 가지고 있어야 하는 전역변수들의 사용으로 viewmodel이 무거워진 부분도 있다. 또한 이를 초기화하는 코드들이 사용되면서 실수할 경우 로직이상이 발생하기도 했다.

  • 뷰모델안에 복잡한 로직이 많기보다는 여러뷰에서 사용되다보니 다양한 메소드들이 많아서 비데해졌다. 비디오 다시보기시 chat구현과 전역변수의 refresh코드들의 영향이 크다.

  • presentation logic - viewmodel

같은 메소드를 공유하는 부분이 많아서 뷰컨트롤러 마다 작성하는 것이 아니라, Viewmodel을 공유하면 좋겠다는 생각 -> MVC 에서 MVVM으로.

이왕 ViewModel을 만들어서 View, Data영역을 분리했으니 SwiftUI에서도 적용해보고 싶다.

0개의 댓글