Refactorings para el uso de Parameter Objects

Partiendo de que tenemos un algoritmo conformado por objetos de responsabilidad única, podemos proceder a mejorar la manera en cómo fluyen los parámetros.

Esta explicación asume que el lector ya estudió el paso 4: Con Parameter Object.

Pasos

1. Grafique los llamados entre los objetos.

diagrama-de-objetos

2. Inicie creando parameter objects de arriba hacia abajo, agrupando los parámetros en una estructura de datos:

parameter-object

3. Cree un parameter object nuevo cada vez que un objeto envía algún parámetro nuevo a otro objeto:

a. Cree la nueva clase, y cree una propiedad por cada parámetro que agrupa.

nuevo-parameter-object

c. Introduzca el parameter object en el algoritmo como una variable local si el objeto siguiente se invoca en el constructor:

nuevo-parameter-object-variable-local

… o como una variable de instancia si el objeto siguiente se invoca en una función pública:

parameter-object-como-variable-de-instancia

d. No olvide asignar todas sus propiedades para que toda la información sea enviada al siguiente objeto. Si no somos cuidadosos, tendremos errores por nulos o fórmulas erróneas. Las pruebas unitarias nos defenderán contra tales errores pero siempre tendremos que recurrir al debugging para encontrar el error.

e. Ajuste las pruebas unitarias. Notemos en esta imagen la prueba unitaria original:

pruebas-unitarias-antes

 

Luego de ajustarla al Parameter Object, es más sencilla de entender, pues hay menos variables y ya no tenemos “Scroll a la derecha”:

pruebas-unitarias-despues

Esto quiere decir que el Parameter Object es como un canal a través de los cuales fluyen los parámetros del algoritmo.

Recuerde

  • Este estilo de programación asume que no usamos parámetros de salida u opcionales, los cuales son riesgosos. Busquemos siempre que los parámetros sean datos solamente de lectura (un único punto de entrada).
  • Si un objeto envía menos parámetros a otro, se envía el mismo parameter object.
  • Asegúrese siempre de inicializar el Parameter Object para no tener errores por valores en nulo.
  • El Parameter Object no se usa para reducir la cantidad de variables de instancia, sino sólo para simplificar la comunicación entre objetos.
  • Marque con un “TO DO” las líneas de código que no cumplen con la ley de Demeter o que realizan más de una sola operación. Estas líneas las arreglaremos en el siguiente paso: “Con Tell Don´t Ask“.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s