-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Organize gradle dependencies #1
base: main
Are you sure you want to change the base?
Conversation
implementation(projects.core.database) | ||
implementation(projects.core.datastore) | ||
implementation(projects.core.network) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
データベースやネットワークスタックへは常にRepositoryを介してアクセスすべきであって、UI層・ドメイン層から直接データベースやネットワークスタックにアクセスすべきでない。
よって、:core:data
から先の依存は上方のモジュールに伝播させるべきでない
core/ui/build.gradle.kts
Outdated
api(projects.core.analytics) | ||
api(projects.core.designsystem) | ||
api(projects.core.model) | ||
api(projects.core.domain) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
:core:ui
に依存するモジュールへ伝播させることによって、UI層のモジュール (:app
, :feature:xxxx
) はとりあえず:core:ui
にだけ依存を定義すれば自ずとドメイン層やデザインシステムへの依存も持つことになる。
@@ -29,6 +29,7 @@ android { | |||
dependencies { | |||
ksp(libs.hilt.ext.compiler) | |||
|
|||
implementation(projects.core.datastore) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
本来は:core:data
だけに依存を持ってRepositoryを介してDataStoreにアクセスすべき。
実装がそうなっていないのでやむを得ず:core:datastore
に依存を持たせている。
@@ -25,9 +25,10 @@ android { | |||
|
|||
dependencies { | |||
api(projects.core.data) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
:core:domain
から:core:data
への依存は上方に伝播させたままにする。
これはドメイン層がオプショナルであることを意味しており、UI層からデータ層の:core:data
にあるRepositoryへの直接アクセスを許容することを意味する。
参考:https://developer.android.com/topic/architecture/domain-layer?hl=ja
Before
After