Le principe de responsabilité unique en pratique | C#

Le principe de responsabilité unique en pratique | C#

Introduction

Dans cet article, nous allons discuter le principe de responsabilité unique en C#. Avant de commencer nous vous invitant à lire notre article précédent là où nous avons abordé les bases du principe de la conception SOLIDLa lettre S dans SOLID signifie en anglais “Single“, représente le principe de responsabilité unique.

Quel est le principe de responsabilité unique en C #?

Notre logiciel doit être conçu de manière à ce que tout ce qui est dans une classe ou dans un module soit lié à une seule responsabilité. Cela ne signifie pas que votre classe ne doit contenir qu’une seule méthode ou propriété, vous pouvez avoir plusieurs membres (méthodes ou propriétés) tant qu’ils sont liés à une seule responsabilité ou fonctionnalité.

Comment pouvons-nous atteindre le principe de responsabilité unique en C #?

Comprenons la nécessité du principe de responsabilité unique en C # avec un exemple. Supposons que nous ayons besoin de concevoir une classe de facture. Comme nous le savons, une classe de facture est essentiellement utilisée pour calculer divers montants en fonction de ses données. La classe facture ne sait pas comment récupérer les données, ni comment formater les données pour afficher, imprimer ou enregistrer, etc.

Si nous écrivons la logique de la base de données, la logique métier ainsi que la logique d’affichage dans une seule classe, alors notre classe assume plusieurs responsabilités. Il devient alors très difficile de changer une responsabilité sans rompre les autres responsabilités. Ainsi, en mélangeant plusieurs responsabilités dans une seule classe la compréhension et le test deviennent difficile et il y a un risque de dupliquer la logique d’autres parties de l’application.

Exemple d’implémentation

La classe BankAccount ci-dessous contient les propriétés du compte et calcule également l’intérêt du compte.

public class BankAccount { public BankAccount() {} public string AccountNumber { get; set; } public decimal AccountBalance { get; set; } public decimal CalculateInterest() { // Code to calculate Interest } }
Code language: JavaScript (javascript)

Maintenant si on ajoute une nouvelle propriété AccountHolderName et on introduit une nouvelle règle pour calculer les intérêts.

Et la, il s’agit d’un type de demande de changement totalement différent. Nous avons 2 types de raisons différentes pour changer une classe. Cela viole le principe de responsabilité unique.

Essayons maintenant d’implémenter le principe de responsabilité unique pour résoudre cette violation. Regardez le code ci-dessous :

public interface IBankAccount { string AccountNumber { get; set; } decimal AccountBalance { get; set; } } public interface IInterstCalculator { decimal CalculateInterest(); } public class BankAccount : IBankAccount { public string AccountNumber { get; set; } public decimal AccountBalance { get; set; } } public class InterstCalculator : IInterstCalculator { public decimal CalculateInterest(IBankAccount account) { // Write your logic here return 1000; } }

Explication

Désormais, notre classe BankAccount est uniquement responsable des propriétés du compte bancaire. Si nous voulons ajouter une nouvelle règle commerciale pour le calcul des intérêts, nous n’avons pas besoin de changer de classe BankAccount.

La classe InterestCalculator ne nécessite aucune modification, au cas où nous aurions besoin d’ajouter une nouvelle propriété AccountHolderName. Nous avons également utilisé des interfaces pour communiquer entre InterestCalculator et la classe BankAccount. Cela nous aidera à gérer les dépendances entre les classes.

Conclusion

Si vous gardez le principe de responsabilité unique à l’esprit dès le départ, il sera beaucoup plus facile de faire des responsabilités uniques par priorité de classe dans votre conception. Le code que le principe de responsabilité unique peut produire sera beaucoup plus simple et exempt de dépendances.

J’espère que cet article vous aide à comprendre le principe de responsabilité unique un peu plus en détails. Vos commentaires et critiques constructives sont toujours appréciés, Vous pouvez aussi lire l’article à-propos Algorithmes et Structures de données ! Que dois-je savoir ?.

Partagez !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *