Aller au contenu principal
- Impératif : état mutable, boucles, affectations ; direct mais partage à surveiller
- Fonctionnel : fonctions pures, immutabilité ; map/filter/reduce, composition
- Séparer le calcul de l'I/O : cœur pur, bordure impure (fonction main)
- Immutabilité : réduit les surprises, coûte des allocations ; mesurer avant de généraliser
- Closures et composition : compose(f, g)(x) = f(g(x))
- Stratégie : algorithme interchangeable (politique de remise, tri)
- Observateur : diffusion d'événements un-à-plusieurs
- Fabrique : déléguer la création, cacher les détails d'instanciation
- Décorateur : ajouter une responsabilité par enveloppement
- Adaptateur : traduire une interface en une autre
- Injection de dépendances : le module reçoit ses collaborateurs, ne les crée pas
- Interfaces petites ; principe d'une seule raison de changer
- Doubles de test faciles quand les frontières sont explicites
- SRP, OCP, LSP, ISP, DIP : cinq garde-fous, pas cinq religions
- Héritage : relations is-a stables ; composition : tout le reste
- Law of Demeter : ne parler qu'à ses collaborateurs directs
- Singleton abusif : état global déguisé, tests qui fuient
- God object : une classe qui sait tout fait tout mal
- Sur-abstraction : interfaces prévues pour des variants qui n'arrivent jamais (YAGNI)