Pregunta

acabo de leer SRP, tan fácil como 123 ... , y todo ello resuena en mí, excepto un párrafo, en una sección llamada "cohesión" (yo he reclamado antes de "obtener" Cohesión, pero esto habla de parámetros vs instancia campos me da que pensar ...):

Tome su clase. Mire sus métodos. ¿Tienen los parámetros o son utilizando campos de instancia? Si ellos estan utilizando parámetros, eliminarlos. Hacer ellos campos de instancia. Cómo se termina con métodos que sólo utiliza uno de los cinco casos? Que lo más probable es una advertencia de la baja cohesión que existe entre ese método y su clase.

¿Es esta eliminación de los parámetros de un mero ejercicio temporal para revelar métodos que se están acercando a la electricidad estática capacidad (baja cohesión), con la idea de que regrese a la utilización de parámetros cuando haya terminado?

O es la preferencia por los campos de instancia de los parámetros de una técnica de diseño actual para mantener una alta cohesión?

Tienes alguna manera extrajo la cita fuera de contexto?

¿Fue útil?

Solución

ABM es un enfoque común real para interfaz de programación basada. Tomar dos clases concretas que implementan una interfaz CRUD:. Empleado y construcción

Ahora imagine cómo su código será estar basada en parámetros:

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

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

¿Qué hay de la construcción?

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

Woops ... ¿cómo se supone que implementar la interfaz CRUD con diferentes parámetros? Crear sobrecargas? Más interfaces? ¿Qué hay de dos parametros (Nombre Apellido)?

Esto hará que tan feo tan rápido .... porque tan pronto como utilizar parámetros con una interfaz CRUD usted tiene más de una razón para el cambio, lo que disminuye la cohesión del diseño.

params basados ??intento Vamos a utilizar nuestros objetos / ejemplo ...

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

empObj.Create();

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

buildingObj.Create();

Con CRUD simple y no hay params incluso se puede espolvorear en el polimorfismo:

someObj.Create();

Esto también conduce a la composición encapsulada, desacoplamiento, SRP, etc ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top