J'essaie de comprendre ce qu'est réellement une responsabilité, alors je veux utiliser un exemple de quelque chose sur lequel je travaille actuellement. J'ai une application qui importe des informations sur les produits d'un système à un autre. L'utilisateur des applications peut choisir différents paramètres pour quels champs de produit dans un système qui veulent utiliser dans l'autre système.Aide à la compréhension du principe de la responsabilité unique
J'ai donc une classe, disons ProductImporter et sa responsabilité est d'importer des produits. Cette classe est grande, probablement trop grande.
Les méthodes de cette classe sont complexes et seraient, par exemple, getDescription. Cette méthode n'obtient pas simplement une description de l'autre système mais définit une description de produit basée sur divers paramètres définis par l'utilisateur. Si je devais ajouter un paramètre et une nouvelle façon d'obtenir une description, cette classe pourrait changer.
Alors, est-ce deux responsabilités? Y en a-t-il un qui importe des produits et un qui en obtient une description? Il semblerait que de cette façon, presque toutes les méthodes que j'utiliserais seraient dans sa propre classe et cela semble être exagéré.
J'ai vraiment besoin d'une bonne description de ce principe car il m'est difficile de le comprendre complètement. Je ne veux pas de complexité inutile.
Il "montre un manque de conception" - C'est le problème que je ne suis pas sûr de savoir comment corriger. Si la méthode de description appartient à la classe et que je dois tenir compte de chaque variation en fonction des différents paramètres, comment pouvez-vous la concevoir autrement? Je ne vois pas d'autre moyen. – user204588
Vous pouvez avoir une classe Description, dont la responsabilité serait de gérer la variation. Et ainsi de suite, lorsqu'une seule responsabilité est trop grande, divisez-la en plus petites responsabilités. –