Times monolithic codebase harder to navigate and manage 03 Limited Code Reusability Higher code duplication 05 Inefficient Testing Test entire application for small change 06 Difficult in Scaling Complex and riskier Time-consuming for larger codebase 04 Team Collaboration Challenges Lead to merge conflicts and slow down the development process 07 Complicated Dependency Management Managing dependencies is hard
and scalable app development process. It also results in a better user experience, as the app can be smaller, faster, and more stable. Clear Separation Faster Gradle Build Support for Instant App & Dynamic Feature Make parts of your App reusable
of tools and practices. Inter-module communication is complex Learning Curve is high A lots of initial setup involved Not Knowing what you’re doing will strongly backfire
Domain and Data. Choosing right modularization architecture • Module are not reusable • Hard for developers to work in isolated environments • Big Module → Slow Build
Choosing right modularization architecture • Size is limited • Developers can work better in isolation • Reusable modules • No clear separation of concerns
layer sub modules Choosing right modularization architecture • Combines advantages of Layer and feature-based modularization • Developers can work better in isolation • Reusable modules • clear separation of concerns
of a certain domain Type of modules • Expose the repository and datasource as an external API • Hide all implementation details and data source from the outside
add third party integration libraries into common module. Eg. for imageLoading , we can use any third-party library Glide, Picasso and Coil etc... If something problem we want to change image library, wechange only in this module.
Plan for Future Define 02 Creating so many small modules & over modularize Avoid 03 Project Document and Communicate Define 04 What we need to care in modularization