클린 아키텍처를 도입한다고는 했으나.. 익숙치 않아 짜다보니 결국엔 또 내 멋대로 짜는 방식이 되어버렸다.
그래서 하루 날 잡고 전체 구조를 싹 바꾸기로 마음 먹었고, 바로 오늘 해냈다,, 그나마 아직은 앱의 규모가 작아서 5시간 밖에(?) 안 걸렸다.
일단 크게 Presentation / Data / Domain 이렇게 세 계층으로 나눴고 이것을 멀티 모듈화를 시켜 관심사 분리와 가독성에 집중을 했다.
또한, 이 과정에서 그래들 관리를 kotlin dsl을 적용하여 build.gradle-> build.gradle.kts 형태로 변경하였다.
각 계층에 대해 간단하게 설명을 하자면
UI를 담당하는 계층으로 Data 계층과 Domain 계층에 의존성을 가지고 있는 계층이다.
이 계층에 포함되는 것들은 view, viewModel, DI, Module 등이다.
Domain 계층에 의존성을 갖고있는 계층으로 데이터들을 관리하는 계층이다.
interface인 repository 구현부나 mapper등이 포함된다.
제일 안 쪽 계층으로 의존성을 가지지않고 Data model이나 Use Case, Repository(interface)가 포함된다.
이러한 구조로 리팩토링한 결과..
상당히 깔끔해졌다 :)