Formation SOLID en pratique

Atelier final : le panier, résumé et checklist SOLID

Les 5 principes appliqués ensemble à un service de panier e-commerce, avec corrigé, résumé d'une page, checklist de revue de code et quiz final.

Réservé aux abonnés

Objectif de la leçon

Appliquer les 5 principes ensemble sur un service de panier réel, puis repartir avec un résumé d'une page, une checklist de revue de code et un quiz final.

L'atelier : le PanierService « tout-en-un »

Durée : 60 minutes, idéalement en binôme. Voici le code de départ :

public class PanierService {

    public double calculerTotal(Panier panier, String codePromo, String modeLivraison,
                                String emailClient) {
        // Promo
        double total = panier.totalHT();
        if (codePromo != null) {
            if (codePromo.startsWith("PCT")) {
                total = total * 0.90;
            } else if (codePromo.startsWith("FIX")) {
                total = Math.max(0, total - 10);
            }
        }
        // Livraison
        double frais;
        if (modeLivraison.equals("COLISSIMO")) {
            frais = total >= 50 ? 0 : 4.90;
        } else if (modeLivraison.equals("CHRONOPOST")) {
            frais = 9.90;
        } else {
            frais = 0;
        }
        // TVA
        double totalTTC = total * 1.20 + frais;

        // Sauvegarde du panier
        new RedisClient("localhost", 6379).set("panier:" + emailClient, panier);

        // Suivi marketing
        new GoogleAnalyticsClient().track("panier_calcule", totalTTC);

        return totalTTC;
    }
}

Consignes

  1. S : listez toutes les raisons de changer de cette classe.
  2. O : rendez possible l'ajout du point relais et du code promo « livraison offerte » sans modifier le code existant.
  3. L / I : un produit numérique ne doit jamais entrer dans le calcul des frais de port. Quelles interfaces créez-vous ?
  4. D : rendez PanierService testable sans Redis ni Google Analytics.
  5. Écrivez un test : panier de 60 € HT, code promo 10 %, Colissimo → total TTC attendu 64,80 € (54 € HT après promo, livraison offerte dès 50 €, TVA 20 %).

La suite de cette leçon est réservée aux abonnés

Les 3 premières leçons de chaque formation sont gratuites. Débloquez la suite pour continuer.