Loading skill
Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Suggérer des design patterns et évaluer les principes SOLID. Se déclenche avec « suggérer des patterns », « vérifier SOLID ».
.claude/skills/wasabeef-sugge-rer-des-design-patterns-et-e-valuer-les-principes-solid/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-12 | ✗→✓ | ▲ Improved | 59% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 31% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 140% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 65% | 0% |
| case-06 | ✓→✓ | = Same ✓ | 113% | 0% |
Suggère des motifs de conception pour votre code et vérifie s'il suit les principes SOLID.
bash/design-patterns [cible_analyse] [options]
--suggest : Suggérer les motifs applicables (par défaut)--analyze : Analyser l'usage des motifs existants--refactor : Générer des propositions de refactorisation--solid : Vérifier la conformité aux principes SOLID--anti-patterns : Détecter les anti-motifsbash# Analyser les motifs pour l'ensemble du projet /design-patterns # Suggérer des motifs pour un fichier spécifique /design-patterns src/services/user.js --suggest # Vérifier les principes SOLID /design-patterns --solid # Détecter les anti-motifs /design-patterns --anti-patterns
textS - Responsabilité Unique (une classe, un rôle) O - Ouvert/Fermé (ouvert à l'extension, fermé à la modification) L - Substitution de Liskov (les sous-types doivent être remplaçables) I - Ségrégation d'Interface (ne pas forcer des méthodes inutilisées) D - Inversion de Dépendance (dépendre d'abstractions, pas de détails)
textRapport d'analyse de motifs de conception ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Motifs actuellement utilisés ├─ Motif Observer : EventEmitter (12 instances) ├─ Motif Factory : UserFactory (3 instances) ├─ Motif Singleton : DatabaseConnection (1 instance) └─ Motif Strategy : PaymentProcessor (5 instances) Motifs recommandés ├─ [ÉLEVÉ] Motif Repository │ └─ Où : src/models/*.js │ └─ Pourquoi : Séparer l'accès aux données de la logique métier │ └─ Exemple : │ class UserRepository { │ async findById(id) { ... } │ async save(user) { ... } │ } │ ├─ [MOYEN] Motif Command │ └─ Où : src/api/handlers/*.js │ └─ Pourquoi : Standardiser la gestion des requêtes │ └─ [FAIBLE] Motif Decorator └─ Où : src/middleware/*.js └─ Pourquoi : Meilleure façon de combiner les fonctionnalités Violations SOLID trouvées ├─ [S] UserService : Fait trop de choses (auth ET autorisation) ├─ [O] PaymentGateway : Doit changer le code pour ajouter des types de paiement ├─ [D] EmailService : Dépend de classes spécifiques, pas d'interfaces └─ [I] IDataStore : A des méthodes que personne n'utilise Comment corriger 1. Diviser UserService en AuthService et AuthorizationService 2. Ajouter une interface PaymentStrategy pour nouveaux types de paiement 3. Créer une interface EmailService 4. Diviser IDataStore en interfaces plus petites
bash# Voir ce qui arrive si vous utilisez un motif /design-patterns --impact-analysis Repository # Obtenir du code d'exemple pour un motif /design-patterns --generate Factory --for src/models/Product.js # Trouver des motifs qui fonctionnent bien ensemble /design-patterns --combine --context "API avec cache" # Vérifier votre architecture /design-patterns --architecture MVC
javascriptclass OrderService { processOrder(order, paymentType) { if (paymentType === "credit") { // Traitement carte de crédit } else if (paymentType === "paypal") { // Traitement PayPal } // Autres méthodes de paiement... } }
javascript// Interface Strategy class PaymentStrategy { process(amount) { throw new Error("Doit implémenter la méthode process"); } } // Stratégies concrètes class CreditCardPayment extends PaymentStrategy { process(amount) { /* Implémentation */ } } // Contexte class OrderService { constructor(paymentStrategy) { this.paymentStrategy = paymentStrategy; } processOrder(order) { this.paymentStrategy.process(order.total); } }
Other measured skills in the registry, with their headline benchmark lift.