Domanda

Ho appena letto SRP, facile come 123 ... , e tutto risuona con me, tranne un paragrafo, in una sezione denominata "coesione" (ho sostenuto prima di "ottenere" coesione, ma questo parlare di parametri vs esempio campi mi dà una pausa ...):

Prendete la vostra classe. Guardate i vostri metodi. Hanno parametri o sono utilizzando campi di istanza? Se sono utilizzando parametri, rimuoverli. Rendere loro campi di istanza. Non si finisce con metodi che utilizzano una sola delle cinque istanze? Che molto probabilmente è un avvertimento della bassa coesione esiste tra questo metodo e la tua Classe.

E 'questo la rimozione di parametri solo un esercizio provvisorio per rivelare metodi che si stanno avvicinando statico-capacità (bassa coesione), con l'idea è che si torna a l'utilizzo di parametri quando hai finito?

O è la preferenza per campi di istanza dei parametri di una tecnica di progettazione vera e propria per mantenere alta la coesione?

ho in qualche modo preso la citazione fuori contesto?

È stato utile?

Soluzione

CRUD è un vero e proprio approccio comune per l'interfaccia di programmazione basato. Prendere due classi concrete che implementano un'interfaccia CRUD:. Dipendenti e costruzione

Ora immaginate come il vostro codice sarà essere parametro di base:

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

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

Che dire di costruzione?

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

Woops ... come si fa a implementare un'interfaccia CRUD con parametri diversi? Creare sovraccarichi? Più interfacce? Che dire due params (Nome Cognome)?

In questo modo ottenere così brutto così veloce .... perché non appena si utilizzano i parametri con un CRUD un'interfaccia si ha più di un motivo per il cambiamento, che diminuisce la coesione del progetto.

params basate meta di Let utilizzando i nostri oggetti / esempio ...

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

empObj.Create();

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

buildingObj.Create();

Con la semplice CRUD e non params si può anche cospargere il polimorfismo:

someObj.Create();

Questo porta anche alla composizione incapsulato, il disaccoppiamento, SRP, ecc ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top