Formation SOLID en pratique

Introduction : pourquoi SOLID dans un e-commerce

Pourquoi SOLID, les 5 principes en une phrase, les symptômes à repérer et le fil rouge ShopFacile, une boutique e-commerce en Java.

Leçon gratuite

Objectif de la leçon

Comprendre pourquoi SOLID existe, découvrir le fil rouge ShopFacile et apprendre à reconnaître les 5 symptômes d’un code e-commerce qui va faire mal.

Le vrai problème : la peur de toucher au code

Dans un e-commerce, le code ne meurt pas d’un bug. Il meurt de la peur d’y toucher. Le marketing veut un code promo pour le Black Friday, la logistique ajoute un transporteur, la compta change une règle de facturation… et chaque changement en casse un autre.

SOLID est un ensemble de 5 principes de conception orientée objet. Ils servent un seul objectif : qu’une demande du métier se traduise par du code ajouté, pas par du code modifié un peu partout.

Les 5 principes en une phrase

LettrePrincipeEn une phraseExemple ShopFacile
SSingle ResponsibilityUne classe, une seule raison de changerLe service de commande ne génère plus les factures
OOpen / ClosedOn ajoute du code, on ne modifie pas celui qui marcheAjouter Mondial Relay sans toucher au calcul des frais
LLiskov SubstitutionUn enfant tient les promesses de son parentUn e-book ne fait pas planter le calcul du poids du colis
IInterface SegregationDe petites interfaces ciblées plutôt qu’une grosseLa carte cadeau n’implémente pas le paiement en 3 fois
DDependency InversionLe métier dépend d’interfaces, pas de la techniqueChanger de prestataire de paiement sans toucher au checkout

Les 5 symptômes à repérer dans votre code

SymptômeCe qu’il trahit
Une classe de 800 lignes qu’on décrit avec « et »Violation de S
Un switch sur le transporteur ou le type de promo qui grossit à chaque campagneViolation de O
Une méthode redéfinie qui lève UnsupportedOperationExceptionViolation de L
Des méthodes vides dans une implémentationViolation de I
Des new StripeClient() ou new MySqlRepository() dans une classe métierViolation de D

Le fil rouge ShopFacile

Un client ajoute des articles au panier, choisit un mode de livraison, paie, puis reçoit une confirmation et une facture. Les objets de base, que l’on réutilisera dans toute la formation :

public record Client(String id, String email, String telephone) {}

public record Article(String sku, String nom, double prixUnitaireHT, int quantite) {
    public double totalHT() { return prixUnitaireHT * quantite; }
}

public class Panier {
    private final List<Article> articles = new ArrayList<>();

    public void ajouter(Article article) { articles.add(article); }
    public List<Article> articles() { return List.copyOf(articles); }

    public double totalHT() {
        return articles.stream().mapToDouble(Article::totalHT).sum();
    }
}

Astuce d’expert

Le fil rouge utilise double pour rester lisible. En production, ne calculez jamais de l’argent en double (0.1 + 0.2 != 0.3) : utilisez BigDecimal avec setScale(2, RoundingMode.HALF_EVEN) ou des montants entiers en centimes (long), et un type valeur Montant pour ne pas mélanger HT et TTC.

La carte de la formation

Chaque étape du parcours d’achat de ShopFacile sert à travailler un principe. Gardez cette carte en tête : à chaque leçon, vous savez où vous êtes.

Cataloguelivre papier, e-book, carte cadeauL1Panierarticles, codes promo★2LivraisonColissimo, Chronopost, point relaisO3Paiementcarte, virement, carte cadeauI4Checkoutprestataire, base de données, e-mailsD5Commandestock, TVA, facture, e-mailS6
Carte Le parcours d’achat ShopFacile et le principe travaillé à chaque étape (★ = atelier final)

Comment chaque leçon est construite

  1. La règle en une phrase.
  2. Une analogie de la vie réelle.
  3. Le code sans pattern, tel qu’on le trouve en production.
  4. Le problème le jour où le métier demande un changement.
  5. Le code avec pattern.
  6. Un tableau avant / après : réutilisation, extension, SRP, tests.
  7. Un lab, un résumé « à retenir » et un quiz.

Erreurs fréquentes

  • Croire que SOLID impose une interface pour chaque classe : on abstrait au deuxième cas, pas au premier.
  • Appliquer SOLID à un script jetable : c’est de la sur-ingénierie.
  • Refactorer sans tests : posez toujours des tests sur l’existant avant de découper.

Lab · 10 min

Ouvrez un projet sur lequel vous travaillez. Trouvez une classe qui présente au moins deux des 5 symptômes ci-dessus. Notez son nom : vous la refactorerez au fil des leçons.

À retenir

  • SOLID = changer le code sans avoir peur.
  • Chaque principe a un symptôme visible dans le code.
  • Le but n’est pas la beauté du code, c’est le coût du prochain changement.

Quiz rapide

  1. Quel est l’objectif commun des 5 principes ? → Rendre le code facile à changer sans régression.
  2. Un switch sur le transporteur qui grossit : quel principe ? → O.
  3. Faut-il créer une interface pour chaque classe ? → Non, seulement quand un deuxième cas existe ou est prévu.

Suivez votre progression. Créez un compte gratuit pour cocher vos leçons et reprendre là où vous en étiez.

Créer un compte gratuit