서론
벌써 6주 차가 되었네요.
6주 차에는 새로운 시도를 많이 해봤습니다.
다른 분들의 MVVM 패턴을 보면서 이렇게도 사용할 수 있구나, 이런 방법도 있구나 많이 배웠어요.
MVVM + state
첫 번째 시도한건 MVVM에 state를 적용하는 것입니다.
기존에는 MVVM의 데이터를 바인딩해서 사용했습니다.
이렇게 사용하니 데이터 흐름을 파악하기 어렵다는 단점이 있었습니다.
View가 예상과 다르게 나올 때 어디가 문제인지 파악하기가 어려웠어요 ㅠㅠ
state를 적용한 분의 코드를 보니
ViewController가 특정 state일 때 이렇게 뷰가 변하는구나!라는 흐름이 한 눈에 보여 좋았습니다.
저도 데이터를 직접 바인딩하는 게 아니라 간단하게나마 state를 적용했더니 흐름이 좀 개선이 되더라고요.
처음 적용해본거라 많이 엉성했지만, 그럼에도 흐름이 개선된 점이 보였습니다.
역시 다른 분의 코드를 많이 봐바야겠다고 느꼈어요.
MVVM + state + action
state를 적용한 코드의 피드백으로 "state에 action이 섞여있네요."라는 피드백을 받았습니다.
state에 isLoading같은 상태 말고도 selected, deselected같은 ViewController의 액션도 섞여 있었어요.
state와 action을 분리하기 위해 ViewController -> ViewModel로 가는 흐름은 action이라는 열거형으로 처리해 주었고,
state에는 ViewModel -> ViewController로 가는 흐름만 남겨두었어요.
이렇게 개선하고 나니 흐름이 단방향으로 바뀌는 걸 느꼈습니다.
VC -> VM으로는 action을 통해 들어가고, VM -> VC는 state를 통해서만 나오는거에요.
흐름을 단방향으로 바꿔서 처음 MVVM을 적용하며 느꼈던 "흐름을 파악하기 어렵다"는 단점이 해소할 수 있었습니다.
MVVM이 정형화된 구조가 아니라 사람마다, 프로젝트마다 구조가 다르다는 것을 깨달은 경험이었습니다.
마무리
6주 차에는 MVVM과 관련된 고민을 많이 해봤던 거 같습니다.
항상 쓰던 방법이 아니라 다른 분들의 코드를 보면서 새로운 도전을 했다는 점에서 뿌듯한 주차였네요.
사실 더 많은 일이 있었지만 이건 다음 주차 회고에서 같이 다뤄보겠습니다.
감사합니다!