SRP
🛠️ Pourquoi le SRP est-il important ?
Appliquer le SRP permet de :
| Avantage | Explication |
|---|---|
| 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 bord | Modifier 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 :
-
Identifier les responsabilités
- Posez-vous la question : "Pourquoi cette classe pourrait-elle changer ?"
- Chaque raison = une responsabilité
-
Décomposer les classes
- Séparez les responsabilités en classes distinctes
-
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ôme | Cause probable | Solution |
|---|---|---|
| Classe massive et difficile à comprendre | Plusieurs responsabilités dans la même classe | Décomposer en classes spécialisées |
| Tests unitaires compliqués | Logique métier mêlée à la persistance ou aux notifications | Séparer les responsabilités dans différents services |
| Changements fréquents qui cassent d’autres fonctionnalités | Couplage trop fort | Isoler 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.