Apprendre + Équipe = Programmes


Quelques références sur le couplage dans le code


Récemment j'ai fait un petit tour des tables des matières d'ouvrages classiques pour trouver des références sur le couplage dans le code. Voici ce que j'ai récolté, sans ordre de préférence.

Livres

The Pragmatic Programmer

Tout d'abord, The Pragmatic Programmer est une super référence sur le sujet.

Notamment dans la 2e édition, le topic 28, Decoupling, pp. 130-137.

Pour vous donner envie de le lire (et ça me donne super envie de le relire !!), ça parle de :

Refactoring

Dans Refactoring, il y a les code smells opposés “Divergent Change” et “Shotgun Surgery” (p. 76 de la 2ème édition), et "Message Chain" (p. 81) avec les refactorings associés.

Code Complete

Dans Code Complete :

Loose coupling: Loose coupling means designing so that you hold connections
among different parts of a program to a minimum. Use the principles of good
abstractions in class interfaces, encapsulation, and information hiding to
design classes with as few interconnections as possible. Minimal
connectedness minimizes work during integration, testing, and maintenance.

Et le chapitre Design Building Blocks: Heuristics, dont l’heuristique Keep Coupling Loose, p. 100, qui parle de :

Et aussi l’heuristique “Aim for strong cohesion”, p. 105.

Clean Architecture

Le livre Clean Architecture a un chapitre Component Cohesion, un chapitre Component Coupling et un chapitre Independance, qui parle de Decoupling Layers, Decoupling Use Cases et Decoupling Mode.

Working Effectively with Legacy Code

Dans le livre Working Effectively with Legacy Code il y a le chapitre 25, Dependency-Breaking Techniques, qui donne des techniques pour découpler des classes suffisamment pour pouvoir les tester.

Articles

Il y a aussi l’article sur le pattern Big Ball of Mud que j’aime bien :

Cette conférence récente d’Arnaud Lemaire :

Et coïncidence, ce tweet d'aujourd'hui de Kent Beck :

Coupling vs cohesion.

Coupling:

- Can be hard to find
- Can be really hard &/| expensive to eliminate.

Cohesive sub-elements are:

- Usually easy to find
- Cheap to achieve, &
- Help you find de-coupling.

Conclusion

C’était chouette de faire ce petit tour de tables des matières dans ces ouvrages, maintenant il me faut du temps pour les lire ou relire, et mettre en pratique 😯 Bonne lecture, bonne pratique de vos apprentissages !

Liens

Les livres cités :