Couplage et cohésion : les deux boussoles
Toutes les architectures se jugent à deux forces : le couplage (dépendances entre morceaux) et la cohésion (les éléments d'un morceau vont-ils ensemble ?).
Prérequis (cursus dev) : responsabilités et cohésion, principes de conception.
Pourquoi
Toutes les architectures se jugent à deux forces : le couplage (dépendances entre morceaux) et la cohésion (les éléments d'un morceau vont-ils ensemble ?). Fort couplage = effet domino à chaque changement ; faible cohésion = fourre-tout incompréhensible. Le reste du cursus n'est que des techniques pour viser faible couplage, forte cohésion.
Concepts
- Couplage : A dépend de B si changer B peut casser A. On le mesure au nombre et à la nature des dépendances (appel direct, base partagée, timing implicite — le pire).
- Cohésion : ce qui change ensemble vit ensemble (une commande et sa validation, pas la facturation et l'envoi de mails dans la même classe).
- KISS / YAGNI : Keep It Simple + You Aren't Gonna Need It. L'architecture la plus chère est celle construite pour des besoins imaginaires : microservices pour 100 users, event-sourcing pour un CRUD.
Exemple : sentir le couplage
// Fort : le module commande connaît la table SQL, le SMTP et le format PDF
import { db } from "./db"; import { sendMail } from "./smtp"; import { pdf } from "./pdf";
// Faible : il dépend d'abstractions (ports) injectées
function createOrder({ orders, notify, invoice }) { /* ... */ }
Deuxième version : testable sans base ni SMTP, remplaçable morceau par morceau.
Cas réel
Monolithe où « changer la couleur d'un bouton casse les exports » : couplage par base partagée + utilitaires globaux. Trois mois de démêlage avant la première feature. Le couplage se paie toujours — avec intérêts.
Pièges
- Confondre découplage et distribution : des microservices qui partagent une base sont un monolithe distribué (le pire des deux mondes).
- Cohésion de façade : regrouper par technologie (dossier
utils/,helpers/) au lieu de regrouper par métier. - YAGNI comme excuse pour ne jamais structurer : simple ≠ bâclé.
À retenir
Faible couplage, forte cohésion ; YAGNI contre l'over-engineering ; le couplage se mesure aux dépendances réelles.