Aller au contenu principal

SRP

🛠️ Pourquoi le SRP est-il important ?

Appliquer le SRP permet de :

AvantageExplication
MaintenabilitéUne classe avec une seule responsabilité est plus facile à comprendre, tester et modifier.
RéutilisabilitéLes classes spécialisées peuvent être réutilisées dans différents contextes.
Réduction des effets de bordModifier une classe n’impacte pas d’autres parties du système.

⚡ Note : Le SRP est la base de la testabilité et de la robustesse du code. Une classe trop "polyvalente" devient rapidement fragile.


🪄 Comment appliquer le SRP ?

Pour respecter le SRP, suivez ces étapes :

  1. Identifier les responsabilités

    • Posez-vous la question : "Pourquoi cette classe pourrait-elle changer ?"
    • Chaque raison = une responsabilité
  2. Décomposer les classes

    • Séparez les responsabilités en classes distinctes
  3. Créer des services spécialisés

    • Persistance, notifications, calculs, etc.

ℹ️ Astuce : Une bonne pratique consiste à donner un nom de classe qui reflète exactement sa responsabilité unique.


📩 Exemple en C#

❌ Mauvaise pratique : Une classe avec plusieurs responsabilités

public class Order
{
public void CalculateTotal()
{
// Logique de calcul du total de la commande
}

public void SaveToDatabase()
{
// Logique de sauvegarde en base de données
}

public void SendEmailConfirmation()
{
// Logique d'envoi d'email de confirmation
}
}

ℹ️ Problèmes :

  • Difficile de tester le calcul du total sans toucher à la persistance ou à l'email
  • Tout changement dans la base de données ou l’email peut casser la classe Order
  • La classe devient rapidement complexe et fragile

✅ Bonne pratique : Une classe, une responsabilité

public class Order
{
public decimal CalculateTotal()
{
// Logique de calcul du total de la commande
return 0m;
}
}

public class OrderRepository
{
public void SaveToDatabase(Order order)
{
// Logique de sauvegarde en base de données
}
}

public class EmailService
{
public void SendEmailConfirmation(Order order)
{
// Logique d'envoi d'email de confirmation
}
}

ℹ️ Avantages :

  • Chaque classe a une seule responsabilité
  • Tests unitaires simples et indépendants
  • Facile à faire évoluer : modifier l’envoi d’email ne touche pas Order

⚡ Problèmes fréquents / Causes probables

SymptômeCause probableSolution
Classe massive et difficile à comprendrePlusieurs responsabilités dans la même classeDécomposer en classes spécialisées
Tests unitaires compliquésLogique métier mêlée à la persistance ou aux notificationsSéparer les responsabilités dans différents services
Changements fréquents qui cassent d’autres fonctionnalitésCouplage trop fortIsoler chaque responsabilité et injecter les dépendances

🎯 Conclusion

Le Single Responsibility Principle permet d’obtenir un code :

  • plus clair
  • plus robuste
  • plus facile à maintenir et à faire évoluer

🧩 SRP est la pierre angulaire de SOLID : maîtriser une responsabilité par classe facilite l’application des autres principes et améliore la qualité globale du code.