Google a récemment publié un guide sur la modularisation des applications Android. Ce guide a pour but d'apporter les meilleures pratiques et modèles aux développeurs pour créer des applications Android multi-modules et faire en sorte que les problèmes rencontrés diminuent lorsque la base de code se développe comme l'évolutivité, la lisibilité, la stabilité et la testabilité.
Selon une enquête auprès des développeurs sur leur expérience avec la modularisation, 54 % des participants ont mentionné qu'il était difficile de trouver de bons supports d'apprentissage sur la modularisation et près de 95 % ont affirmé que le matériel disponible sur developer.android.com était insuffisant, Google a donc décidé de lancer un guide to Android app modularization. A noter que ce guide est destiné aux développeurs intermédiaires et avancés qui utilisent déjà recommended app architecture.
Selon Google, certaines de leurs applications utilisent déjà la modularisation, telles que Play Store, Google News et YouTube.
La modularisation est une pratique qui consiste à organiser la base de code en parties faiblement couplées, généralement appelées modules. Chaque module doit être indépendant et conçu pour servir un objectif clair.
(image prise sur https://developer.android.com/topic/modularization)
La modularisation apporte de nombreux avantages ; Les modules réduisent la complexité de la conception, facilitent la maintenance et font évoluer les grands systèmes. Jetons un coup d'œil sur certains de ces avantages :
- Réutilisabilité : offre la possibilité de partager du code et de créer plusieurs applications à l'aide du même module ; une application doit être une somme de plusieurs modules où chaque module contient des fonctionnalités spécifiques
- Contrôle de visibilité strict : permet aux développeurs de contrôler facilement ce qui doit être exposé aux autres parties de la base de code et des modules
- Livraison personnalisable : Play Feature Delivery permet aux développeurs de fournir des fonctionnalités spécifiques de l'application de manière conditionnelle ou à la demande.
D'autres avantages peuvent être obtenus facilement lors de l'utilisation de la modularisation. Il s'agit de :
- Évolutivité : lorsqu'un projet est correctement modularisé, il existe généralement un principe de séparation des préoccupations et une base de code faiblement couplée, ce qui facilite la maintenance et l'évolution du système
- Propriété : les modules peuvent être utilisés pour renforcer la responsabilité en ayant un propriétaire dédié qui est responsable de la maintenance du code, de la correction des bugs, de l'ajout de tests et de la révision des modifications
- Encapsulation : ce qui signifie que les modules doivent avoir le moins de connaissances possible sur les autres parties. Le code isolé facilite la lecture, la compréhension et l'évolution
- Testabilité : la possibilité de tester le code ; il est plus facile et plus rapide de tester des modules que de tester un gros système étroitement couplé
- Temps de construction : lié à la construction incrémentielle, au cache de construction ou à la construction parallèle que certaines fonctionnalités de Gradle peuvent tirer parti de la modularité pour améliorer les performances de construction
Google a mis à disposition l'application multi-module Now in Android dans un référentiel GitHub, avec un parcours de modularisation pratique qui décrit ce que font les modules et comment ils communiquent entre eux.
Le guide contient également une section relative aux modèles de modularisation courants où vous pouvez trouver plus d'informations sur le couplage faible et la cohésion élevée, les modules de données, les modules de fonctionnalités, les modules d'application, les modules communs, etc.