#Un peu d’histoire

#Google et l’obsolecence

Killed By Google

Google a une longue histoire de produits abandonnés. Android n’échappe pas à la règle, avec de nombreux frameworks et librairies tombés en désuétude, un développement mobile contrairement au web, n’a pas vraiment d’autre choix que de suivre les guidelines de Google (ou d’Apple). Chaque année Google propose de nouvelles guidelines, de nouveaux patterns, de nouvelles librairies. Parce que l’innovation est constante et vient du mobile depuis l’avènement de l’iPhone en 2007.

Que ce soit l’AR, la VR, l’IOT, l’IA ou le Machine Learning, le mobile est le point d’entrée de ces nouvelles technologies. Souvent les développeur mobile sont les premiers à les utiliser, à les tester, à les intégrer dans leurs applications, ce qui rend la tâche difficile intellectuellement et techniquement.

#Du chaos Ă  la Clean Architecture moderne

#Les débuts chaotiques (2008-2014)

  • Ă€ ses dĂ©buts, Android ne proposait pas de guidelines architecturales claires.
  • Les dĂ©veloppeurs devaient souvent tout gĂ©rer dans leurs Activities, crĂ©ant ce qu’on appelle aujourd’hui des “God Activities” - des classes massives mĂ©langeant UI, logique mĂ©tier et accès aux donnĂ©es.
  • Il ne faut pas oublier qu’Android est un système d’exploitation Ă  la base fait pour les appareils photo.
    • Le dĂ©veloppement d’applications mobiles n’était pas la prioritĂ© de Google.
    • C’est pourquoi le dĂ©veloppement d’applications Android Ă©tait souvent chaotique, avec des applications lentes, instables et difficiles Ă  maintenir.

#L’émergence des patterns (2014-2016)

Face à ces problèmes, la communauté a commencé à adopter différents patterns :

  1. MVC (Model-View-Controller)

    • Premier pattern largement adoptĂ©
    • Problème : Controller trop liĂ© Ă  la View dans Android
  2. MVP (Model-View-Presenter)

    • Plus adaptĂ© Ă  Android
    • Meilleure sĂ©paration des responsabilitĂ©s
    • Tests plus faciles

#La révolution MVVM (2016-2018)

Google introduit l’Architecture Components et le pattern MVVM :

  • ViewModel: Gestion du cycle de vie
  • LiveData: Data binding rĂ©actif
  • Room: ORM pour SQLite

#Clean Architecture & Single Activity (2018-2020)

|150px Influence de Robert C. Martin et adoption massive de la Clean Architecture :

  1. Principes clés:

    • Separation of Concerns
    • Dependency Rule
    • SOLID Principles
  2. Couches:

    • Presentation (UI)
    • Domain (Use Cases)
    • Data (Repositories)

#Modern Android Development avec Jetpack (2020+)

L’introduction de Jetpack Compose révolutionne l’architecture UI :

#Data Layer

Au niveau du data layer, Google Ă  choisi de conserver les mĂŞmes principes que ceux de la Clean Architecture.

La nouveauté se situe surtout au niveau de la couche UI avec Compose.

🆙 Les données drive l’UI !

Dans cette architecture moderne, c’est bien les données qui drive l’UI et non l’inverse. Quand un utilisateur souhaite interagir avec l’application, il déclenche une action qui va modifier l’état des données de l’application, et non l’UI directement.

#Ui Layer

  1. Composable Architecture:

    • UI dĂ©clarative
    • État unidirectionnel
    • Composition over inheritance
  2. Jetpack Compose + Clean Architecture:

    • SĂ©paration claire des responsabilitĂ©s
    • State hoisting
    • Composition locale vs globale

🆙 Demander de l’aide

Si vous avez du mal à comprendre ces concepts on peut revenir dessus, mais il faut poser des questions. Il est fondamental de comprendre la mise à jour des vues Compose pour bien développer des applications Android modernes.

#Bonnes pratiques actuelles avec Jetpack Compose

  1. Single Source of Truth (SSOT)

    • État UI centralisĂ© dans le ViewModel
    • Flow/StateFlow pour la rĂ©activitĂ©
    • State hoisting pour la composition
  2. Unidirectional Data Flow (UDF)

    • État descendant (top-down)
    • ÉvĂ©nements remontants (bottom-up)
    • Predictable state management
  3. Design Patterns courants

    • Repository Pattern pour l’accès aux donnĂ©es
    • Factory Pattern pour la crĂ©ation d’objets complexes
    • Strategy Pattern pour les diffĂ©rentes implĂ©mentations
    • Observer Pattern via Flow/StateFlow

#Et alors ?

L’architecture Android a considérablement évolué, passant d’un système sans structure claire à un écosystème mature avec Jetpack Compose. Les principes de Clean Architecture, combinés aux outils modernes de Jetpack, permettent aujourd’hui de créer des applications maintenables, testables et évolutives.

🔑 Les points clés à retenir :

  • Vous pouvez voir Jetpack Compose comme une opportunitĂ© de repenser vos applications et d’adopter des bonnes pratiques modernes, tout en gardant Ă  l’esprit les principes fondamentaux de Clean Architecture.
  • Jetpack en utilisant Compose sont au final très proches des framework web comme React ou Vue.js.
  • Le principe de Separation of Concerns reste fondamental
  • L’état doit ĂŞtre prĂ©visible et unidirectionnel
  • La testabilitĂ© doit ĂŞtre considĂ©rĂ©e dès le dĂ©but
  • Les composants doivent ĂŞtre dĂ©couplĂ©s et rĂ©utilisables
  • La Clean Architecture n’est pas un cadre rigide mais un guide adaptable