Les principes SOLID démystifiés — (S)

Apr 17 2023
Principe de responsabilité unique
Une classe ne doit être responsable que d'un seul objectif, ce qui signifie qu'une classe ne doit avoir qu'un seul type de travail à effectuer, tel que (logique de base de données, logique de journalisation, etc.). Exemple de scénario Considérons une application qui calcule la somme de l'aire de toutes les formes (cercle, carré, triangle, etc.

Une classe ne doit être responsable que d'un seul objectif, ce qui signifie qu'une classe ne doit avoir qu'un seul type de travail à effectuer, tel que (logique de base de données, logique de journalisation, etc.).

Exemple de scénario

Considérez une application qui calcule la somme de la surface de toutes les formes (cercle, carré, triangle, etc.) dans un tableau donné et affiche le résultat dans n'importe quel format dont nous avons besoin.

Mal écrit

Dans la classe AreaCalculator , nous ne calculons pas seulement la somme des aires des formes fournies, mais nous produisons également des données au format JSON. Considérez un scénario où la sortie doit être convertie dans un autre format comme CSV, HTML ou etc.

Ce code est fonctionnellement correct mais viole le principe de responsabilité unique. La classe AreaCalculator doit uniquement calculer la somme des aires des formes fournies. Il ne doit pas être concerné par l'affichage des données au format JSON ou tout autre format.

Bien écrit

Pour remédier à cette violation, nous devons créer une classe distincte pour gérer la sortie des données de la classe AreaCalculator . Cette nouvelle classe AreaCalculatorDisplay gérera la logique pour sortir les données dans n'importe quel format donné.

Principaux avantages

  1. Tests - Une classe avec une responsabilité aura beaucoup moins de cas de test.
  2. Couplage inférieur - Moins de fonctionnalités dans une seule classe auront moins de dépendances.
  3. Organisation - Les classes plus petites et bien organisées sont plus faciles à rechercher que les classes monolithiques.