Closed SeongUgJung closed 12 months ago
좀 더 naive 한 접근방법이 생각나서 다시 작업해서 올리겠습니다.
기존 코드들이 함수위주로 적용되어 main 모듈에서 하위 구현체 모듈에 대해 강한 커플링이 구성되어 있어 nav-graph 기능과 에러 처리등에서 이를 분리하기가 매우 난해하여 이를 해결하고자 LocalCompositionProvider 를 이용하였으나 이는 임시방편에 가까운 형태입니다.
이 점이 Feature 베이스를 사용하는 레퍼런스에서 가장 어려운 고민 주제가 되는 것 같습니다. 대부분 단순한 형태의 네비게이션 형태이지만 사실 현업과 같은 환경에서는 복잡한 라우팅이 요구되는데 하나의 모듈에서 모든 라우팅을 담당하는부분에 어려움이 있었습니다. 작성해주신 내용처럼 이러한 문제를 해결하기 위한 뚜렷한 Practice가 아직은 참고할만한 자료가 많이 부족한 상태이기 때문에, 의견주신 내용이 개발자들의 고민 욕구를 한층 푸는데 도움이 될 것으로 보입니다. 👍🏻
좀 더 간단하고 직관적인 형태로 변경하였습니다.
MainNavigator 에서 사용할 DroidKnightsNavController
, NavGraph 빌드를 위한 DroidKnightsNavGraph
, 탭 정보 관리를 위한 DroidKnightsTab
을 추가 하고 이를 주입받아 기존의 코드를 대체하는 형태로 해서 변경을 최소화 하도록 하였습니다.
리뷰해주시는대로 https://github.com/droidknights/DroidKnights2023_App/issues/262 작업 진행하도록 하겠습니다.
@SeongUgJung https://github.com/droidknights/DroidKnights2023_App/pull/261#discussion_r1320545777 이 내용 놓치신 것 같아서 맨션 드립니다.
확인되면 병합하도록 하겠습니다. 🙏🏻
Issue
Overview (Required)
feature:main
은 각feature:xxx-api
만 참조feature
내의 구현체 모듈은 의존성에서 수평적 관계로 정의됨main-nav-graph
의 기능DroidKnightsNavGraph
: nav-builder 를 위한 추상화 추가DroidKnightsNavController
: nav-controller 를 위한 추상화 추가DroidKnightsTab
: tab 정보를 관리하기 위한 추상화 추가DroidKnightsNavController
DroidKnightsNavGraph
home-api
session-api
setting-api
contributor-api
bookmark-api
에서DroidKnightsNavController
와DroidKnightsNavGraph
추상화 추가main
모듈에서는 각 하위모듈의xxx-api
모듈 의존성 추가기존 코드들이 함수위주로 적용되어 main 모듈에서 하위 구현체 모듈에 대해 강한 커플링이 구성되어 있어 nav-graph 기능과 에러 처리등에서 이를 분리하기가 매우 난해하여 이를 해결하고자 LocalCompositionProvider 를 이용하였으나 이는 임시방편에 가까운 형태입니다.MainActivity 에서는 각 모듈내의
DroidKnightsNavGraph
DroidKnightsNavController
DroidKnightsTab
의 구현체를 추상화 객체를 통해서 주입받고 이를 동작하도록 하였습니다.의존성 변경사항
차이점
App
App
main
main
,home
,setting
,contributor
,session
,bookmark
,core-impl
home
,setting
,contributor
,session
,bookmark
,core-impl
core-apis
,feature-apis
,main-nav-graph
,design
,ui
,navigation
core-apis
,design
,ui
,navigation