Aller au contenu principal

#Slides — Paradigmes & patterns

#Trois styles

  • Impératif : état mutable, boucles, affectations ; direct mais partage à surveiller
  • Fonctionnel : fonctions pures, immutabilité ; map/filter/reduce, composition

#Immutabilité et effets

  • 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))

#Patterns

  • 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

#Modularité et testabilité

  • 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

#SOLID (aperçu), composition > héritage

  • 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

#Anti-patterns fréquents

  • 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)