Plusieurs façons d'être complexe
« Complexe » ne veut pas seulement dire « lent ». Un programme peut répondre vite et rester pénible à modifier, à tester ou à expliquer à un collègue.
| Ce qui devient complexe | Ce que vous observez | Question utile |
|---|---|---|
| Travail de la machine | Lectures, écritures, copies, comparaisons | Combien d'opérations réelles sont faites ? |
| Code | Branches, classes et dépendances se multiplient | Combien d'endroits portent la décision ? |
| Charge mentale | Il faut garder trop de détails en tête pour changer une ligne | Quel détail peut rester derrière un contrat ? |
| Coordination | Un changement oblige plusieurs personnes ou fichiers à bouger ensemble | Qui possède cette responsabilité ? |
Le réflexe
Avant de chercher le nom d'un patron de conception, nommez la douleur. Une décision est-elle répétée ? Une classe connaît-elle trop de détails ? Une variante fuit-elle dans tous les clients ?
Les mêmes lignes, pas le même poids
Imaginez le même choix if + new dans cinq contrôleurs. Dix lignes répétées cinq fois pèsent plus que dix lignes réunies dans un seul endroit. Chaque nouveau canal impose cinq recherches, cinq modifications et cinq occasions d'oublier un cas.
Le code de choix n'a pas disparu. Il vit désormais dans la fabrique. Le contrôleur ne connaît plus que deux gestes utiles : demander un expéditeur, puis envoyer le message.
Déplacer n'est pas supprimer
Un pattern ne rend pas automatiquement le programme plus rapide et ne retire pas la décision. Il choisit l'endroit où cette décision sera comprise, testée et modifiée.
Donner une adresse à la difficulté
Gardez un petit contrat côté client
Le client demande l'opération dont il a besoin. Il ne charge pas les détails de construction ou les variantes concrètes.Regroupez la responsabilité qui varie
La partie riche a une adresse. Un changement local reste local tant que le contrat tient.Acceptez le coût là où il apporte quelque chose
Une interface et plusieurs classes ajoutent de la navigation. Ce prix n'est utile que s'il réduit une douleur réelle ailleurs.
Dans une équipe, plusieurs personnes se partagent les responsabilités. Quand vous travaillez seul, ces responsabilités ne disparaissent pas : vous devez toutes les assumer, mais pas toutes en même temps. Vous portez plusieurs casquettes. Quand vous utilisez la fabrique, vous pouvez vous concentrer sur son utilisation sans remettre la casquette de sa conception ni recharger tous ses détails.
Le bon moment pour un pattern
Le pattern répond à une douleur présente
- • La même décision est recopiée.
- • Une responsabilité change pour plusieurs raisons.
- • Des variantes réelles doivent respecter le même contrat.
- • Le code client connaît des détails qu'il ne devrait pas porter.
Le pattern arrive trop tôt
- • Deux cas triviaux sont stables et lisibles.
- • Les couches n'ont aucune douleur précise à résoudre.
- • Le choix vient seulement d'un hypothétique « peut-être un jour ».
- • Le nom du pattern arrive avant le problème.
Sortez un pattern dès qu'il devient utile, pas dès qu'il devient possible.
Vérifiez le raisonnement
Vérifiez vos réflexes
Une réponse par question. La correction apparaît tout de suite.