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.
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
| Lettre | Principe | En une phrase | Exemple ShopFacile |
|---|---|---|---|
| S | Single Responsibility | Une classe, une seule raison de changer | Le service de commande ne génère plus les factures |
| O | Open / Closed | On ajoute du code, on ne modifie pas celui qui marche | Ajouter Mondial Relay sans toucher au calcul des frais |
| L | Liskov Substitution | Un enfant tient les promesses de son parent | Un e-book ne fait pas planter le calcul du poids du colis |
| I | Interface Segregation | De petites interfaces ciblées plutôt qu’une grosse | La carte cadeau n’implémente pas le paiement en 3 fois |
| D | Dependency Inversion | Le métier dépend d’interfaces, pas de la technique | Changer de prestataire de paiement sans toucher au checkout |
Les 5 symptômes à repérer dans votre code
| Symptôme | Ce 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 campagne | Violation de O |
Une méthode redéfinie qui lève UnsupportedOperationException | Violation de L |
| Des méthodes vides dans une implémentation | Violation de I |
Des new StripeClient() ou new MySqlRepository() dans une classe métier | Violation 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.
Comment chaque leçon est construite
- La règle en une phrase.
- Une analogie de la vie réelle.
- Le code sans pattern, tel qu’on le trouve en production.
- Le problème le jour où le métier demande un changement.
- Le code avec pattern.
- Un tableau avant / après : réutilisation, extension, SRP, tests.
- 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
- Quel est l’objectif commun des 5 principes ? → Rendre le code facile à changer sans régression.
- Un
switchsur le transporteur qui grossit : quel principe ? → O. - 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