Comments (2)
common-domain
& common-data
exist purely out of the reason that two or more features require access to the same use cases. Putting them inside the domain
& data
module of some feature will require importing the whole feature, including domain
, data
, and presentation
subpackages. This is not ideal, since we want to just have access to the use cases & don't really care about the presentation
.
feature-discovery
& feature-category
both use Observe*GamesUseCase
& Refresh*GamesUseCase
. Therefore, they are put into the common-domain
that is included then into both feature-discovery
& feature-category
modules.
Hope it helps.
from gamedge.
Btw, common-domain
& common-data
modules are also not ideal, in my opiniom. The reason being is that, sooner or later, they are bound to become monoliths, since quite a lot of use cases may be reused across features when the app grows.
The better idea is having some common module (e.g., common-games
) that will have two subpackages called domain
& data
. Then it'll be quite easy to plug them into features that actually use them. In that scenario, common-domain
and common-data
won't exist at all, since everything will be extracted into corresponding reusable modules (e.g., common-games
, common-auth
, common-news
, etc.) & the monolith problem is resolved. However, I haven't tried that yet, but that's definitely looks much better than the current approach of having just common-domain
and common-data
modules.
from gamedge.
Related Issues (20)
- Consider adding navigation rail component for big screens
- Try out disabling Jetifier to improve build time
- Create a use case for generating game's different URLs and refactor `GameInfoViewModel` to use it
- Migrate from using Accompanist's insets to Compose's out of the box solution
- Consider replacing toasts with snackbars for showing messages
- Consider adding a light theme
- Refactor multi-modular approach so that each module will contain domain, data, and presentation packages
- Keep the `igdb-api` JSON schema in sync with the backend
- Extract use cases combination logic into a separate use case inside the `GameInfoViewModel`
- Rename UI model classes & mappers to have a `UiModel` & `UiModelMapper` suffixes
- Drop SplashActivity alltogether
- Delete redunant commens inside resource files
- Migrate to using MutableStateFlow.update method when updating values
- Implement OkHttp's Authenticator
- Add an ability to change the app's theme inside the app
- Refactor casting `MutableStateFlow` to `StateFlow` by using `asStateFlow` extension
- Create a custom `@Preview` annotation as a shortcut for both light & dark themes
- AS always shows `Duplicate content roots detected` popup when Gradle sync is performed
- Create a lint check for verifying imports inside `feature-*` domain modules
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gamedge.