TDD에 대해 공부하면서, 테스트 코드 예시를 작성하면서 이해하기 전에, 사용하는 디자인 패턴에 대해 이해하는 것이 테스트 코드 작성에 도움을 줄 수 있을 것 같아, 이번 프로젝트에서 사용할 MVI 패턴에 대해 알아보려고 합니다.
디자인 패턴은, 개발하면서 생기는 공통적인 문제를 해결하기 위한 솔루션 입니다.
mvc, mvp, mvvm 같은 패턴들은 관심사의 분리를 통해 테스트 코드의 작성을 용이하게 해주는 등, 대규모 개발에 있어서 필수 불가결한 요소가 되었습니다.
mvc 패턴의 View와 Model 사이의 높은 결합도는 mvp, mvvm 패턴을 파생시켰고, 데이터와 뷰를 분리함으로써 얻는 장점으로 인해 현재는 많은 프로젝트에 mvp, mvvm 패턴을 사용하고 있습니다.
하지만, 이들도 마냥 장점만 있는 것은 아니었습니다.
mvp, mvvm 패턴을 적용하면서 직면하는 문제로 두 가지가 발생하였습니다
위 문제들을 MVI에서 어떻게 풀어나가는지 확인해 보면서, MVI에 대해 알아보겠습니다.
MVI는 Model, View, Intent로 이루어져 있으며, 데이터베이스, 네트워크 통신등의 작업을 진행하기 위해 SideEffect를 포함합니다.
이유는 https://appmattus.medium.com/top-android-mvi-libraries-in-2021-de1afe890f27 에서 확인할 수 있습니다.
위 링크에서, 왜 MVI 라이브러리를 사용하는지, MVI 프레임워크들의 종류들과 평가에 대해서 확인할 수 있습니다.
MVI는 순수 함수로 이루어진 Pure cycle과, 부수효과가 포함되어있는 Side effct cycle로 표현할 수 있습니다.
다음 포스팅에서는, https://orbit-mvi.org/ MVI 프레임워크 중 하나인, orbit을 사용해 MVI의 Pure cycle에 대해 이해하겠습니다.
순수 함수와 부수 효과에 대해 들어보신 적이 있나요❓
함수형 프로그래밍 : 부수 효과를 없애고 순수 함수를 만들어 모듈화 수준을 높이는 프로그래밍 패러다임
- 부수 효과 : 외부의 상태를 변경하는 것, 함수로 들어온 인자의 상태를 직접 변경하는 것
- 순수 함수 : 부수효과가 없는 함수 즉, 어떤 함수에 동일한 인자를 주었을 때 항상 같은 값을 리턴하는 함수
참고 문서
https://sungbin.land/아직도-mvvm-이젠-mvi-시대-319990c7d60
https://medium.com/@kimdohun0104/mvi-패턴에-대한-고찰-이유와-방법-그리고-한계-767cc9973c98
https://dev.to/kaleidot725/implementaing-jetpack-compose-orbit-mvi-3gea
https://yoon-dailylife.tistory.com/117
1빠따 출석인증^^~