Publié le

Maitriser la cohésion des composants, les 3 principes que tout développeur devrait connaître 😎

5 min lecture - 829 mots
Auteurs
  • avatar
    Nom
    Cédric RIBALTA
    Twitter
post image

Les 3 principes de cohésion des composants : Pourquoi et comment les appliquer 😎

Dans le développement logiciel, la cohésion des composants est cruciale pour construire des systèmes modulaires et maintenables. Dans "Clean Architecture", Robert Martin introduit trois principes fondamentaux pour guider la conception des composants : le Reuse/Release Equivalence Principle (REP), le Common Closure Principle (CCP) et le Common Reuse Principle (CRP). Si tu veux améliorer la structure de ton code, il est essentiel de comprendre et d’appliquer ces principes.

Voyons ensemble comment chacun de ces principes fonctionne et comment ils peuvent rendre ton architecture plus robuste et évolutive.

1. Le Reuse/Release Equivalence Principle (REP) 🚀

Libère ce que tu réutilises

Ce principe est simple : un composant réutilisable doit être publiable et versionné. En d’autres termes, si tu veux qu’un composant soit réutilisé dans différents projets, il doit être suffisamment stable et structuré pour être publié, avec une version claire et des interfaces bien définies. Cela permet à d’autres développeurs de l’adopter sans craindre des changements imprévus qui pourraient casser leur code.

Pourquoi c’est important ? Imagine que tu réutilises un morceau de code que tu n’as jamais versionné. Si tu fais des changements dans ce composant plus tard, tu risques de casser les projets qui l’utilisent. En versionnant et en publiant un composant, tu garantis une certaine stabilité, car les autres développeurs sauront quelle version utiliser et à quel moment.

Exemple concret : Tu crées une bibliothèque pour gérer les connexions à une base de données. Pour qu’elle soit utile à d'autres projets, tu dois libérer une version stable et fournir des interfaces claires pour garantir que son intégration soit sans risque. À chaque mise à jour, tu publies une nouvelle version afin que les utilisateurs sachent qu’ils peuvent l’adopter en toute confiance.

2. Le Common Closure Principle (CCP) 🔄

Groupe ce qui change ensemble

Le Common Closure Principle stipule que les classes au sein d’un même composant doivent changer pour les mêmes raisons et en même temps. Cela signifie que, pour minimiser les risques de modification, tu dois regrouper les classes qui évoluent en réponse aux mêmes types de changements. De cette manière, tu peux gérer les changements de façon plus contrôlée.

Pourquoi c’est important ? Lorsque tu modifies ton code, tu veux éviter de toucher à des composants multiples et dispersés. Si tes classes sont bien regroupées, les changements sont localisés et ne risquent pas d’affecter d’autres parties du système. Ce principe te permet de réduire la propagation des modifications.

Exemple concret : Dans un système de facturation, plusieurs classes gèrent les règles métier liées à la gestion des factures. Si les lois fiscales changent, tu devras modifier ces règles. En appliquant le CCP, tu regroupes ces classes dans un même module, de sorte qu’un seul module soit modifié si ces règles évoluent. Cela limite les risques de propagation de changements imprévus ailleurs dans ton application.

3. Le Common Reuse Principle (CRP) 🔧

Ne réutilise que ce dont tu as besoin

Le Common Reuse Principle stipule que les classes d’un même composant doivent être réutilisées ensemble. Si tu utilises une classe d’un composant, toutes les autres classes de ce composant devraient également être pertinentes pour toi. Si ce n’est pas le cas, cela signifie que le composant est mal conçu, car tu importes des dépendances dont tu n’as pas besoin.

Pourquoi c’est important ? Ce principe vise à éviter d’introduire des dépendances inutiles dans ton code. Si tu utilises une classe d’un composant qui contient également des fonctionnalités dont tu n’as pas besoin, tu alourdis ton projet sans raison, et cela augmente les risques de maintenance.

Exemple concret : Tu as un module qui contient à la fois des classes pour valider des formulaires et gérer l'authentification. Si un autre projet n’a besoin que de la validation de formulaires, il ne devrait pas être forcé d'importer les classes d'authentification. Il serait donc préférable de séparer ces deux fonctionnalités dans des composants distincts, suivant le CRP.

Comment ces trois principes fonctionnent ensemble 💡

Ces trois principes s’intègrent pour assurer une meilleure cohésion des composants :

  • Le REP te permet de rendre tes composants réutilisables et fiables en les versionnant correctement.
  • Le CCP t’assure que les classes qui changent pour les mêmes raisons sont regroupées ensemble, minimisant les changements non désirés ailleurs.
  • Le CRP garantit que tu ne dépends que des classes dont tu as réellement besoin, évitant ainsi des dépendances inutiles.

En suivant ces trois principes, tu crées des composants plus cohésifs, faciles à maintenir et à évoluer, et surtout, plus fiables à long terme.

Conclusion 🏁

Le respect des principes de cohésion des composants — REP, CCP, et CRP — t’aidera à concevoir des architectures logicielles plus modulaires, maintenables et évolutives. En les appliquant correctement, tu éviteras les pièges des composants surchargés, difficiles à mettre à jour ou qui introduisent des dépendances non nécessaires.

La prochaine fois que tu crées ou modifies un composant, pense à ces principes. Ils ne sont pas seulement des règles abstraites, mais des outils pratiques qui te guideront vers une architecture plus propre et plus efficace.