Question

Je viens de lire SRP, aussi facile que 123 ... , et tout cela résonne avec moi, sauf un paragraphe, dans une section intitulée « cohésion » (je l'ai fait valoir devant pour « obtenir » la cohésion, mais parler de paramètres vs exemple champs me donne une pause ...):

  

Prenez votre classe. Regardez vos méthodes.   Ont-ils des paramètres ou sont-ils   en utilisant des champs d'instance? Si ils sont   en utilisant les paramètres, les supprimer. Faire   eux champs d'instance. vous retrouvez-vous   avec des procédés qui utilisent uniquement l'un des   cinq cas? C'est très probablement un   avertissement de la faible cohésion que   existe entre cette méthode et votre   classe.

Est-ce la suppression des paramètres simplement un exercice temporaire pour révéler les méthodes qui approchent-capacité statique (faible cohésion), l'idée étant que vous revenez à l'utilisation des paramètres lorsque vous avez terminé?

Ou est la préférence pour les champs d'instance sur les paramètres d'une technique de conception réelle de maintenir la cohésion élevée?

Ai-je pris en quelque sorte la citation hors contexte?

Était-ce utile?

La solution

CRUD est une véritable approche commune à l'interface de programmation basée. Prenez deux classes de béton qui mettent en œuvre une interface CRUD:. Employés et construction

Maintenant, imaginez comment votre code ressemblera à être paramètre basé:

Employee employeeObj = new Employee();
Building buildingObj = new Building();

string firstName = "Bob";
employeeObj.Create(firstName);

Qu'en est-il construire?

BuildingTypes buildingType = BuildingTypes.One;
building.Create(buildingType);

... Woops comment êtes-vous censé mettre en œuvre l'interface CRUD avec des paramètres différents? Créer des surcharges? Plus d'interfaces? Qu'en est-il deux params (prenom nom)?

Ce sera si laid si vite .... parce que dès que vous utilisez les paramètres avec une CRUD interface que vous avez plus d'une raison de changement, ce qui diminue la cohésion de la conception.

essayer de Let utiliser nos objets / par exemple à base params ...

Employee empObj = new Employee();
empObj.FirstName = "Bob";

empObj.Create();

Building buildingObj = new Building();
buildingObj.BuildingType = BuildingTypes.One;

buildingObj.Create();

Avec CRUD simple et pas params on peut même saupoudrez polymorphisme:

someObj.Create();

Cela conduit aussi à la composition de encapsulé, découplage, SRP, etc ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top