Malos olores: Responsabilidad


El equilibrio en la responsabilidad entre objetos es difícil de conseguir. Una de las virtudes de la refactorización es que nos permite experimentar con diferentes ideas de una forma segura y nos permite cambiar de idea.

Hay herramientas que nos ayudan a decidir como trabajan los objetos entre sí, como los patrones de diseño o las cartas CRC.

Las refactorizaciones suelen ser reversibles y pueden compensar dos opciones.

Los malos olores que pueden aparecer por una mala separación de las responsabilidades son:

Feature Envy

Síntomas

Un método parece más enfocado a manipular los datos de otra clase más que los suyos. Esto suele generar duplicidad ya que varios clientes realizan las mismas acciones sobre los datos de otro objeto o este es tocado varias veces en una misma fila.

Qué hacer

Utiliza Move Method para poner las acciones en la clase correcta. Es probable que tengas que utilizar primero Extract Method para aislar la parte de código que te interesa mover.

Recompensas

Contraindicaciones

En ocasiones el comportamiento está puesto intencionadamente en la clase «incorrecta». Por ejemplo, algunos patrones de diseño, como el Strategy o Visitor ponen el comportamiento en una clase separada y así poder realizar cambios de forma independiente. Si utilizas Move Method para ponerlo de vuelta, puedes acabar uniendo cosas que deberían cambiar de forma independiente.

Innapropiate Intimacy (General Form)

Síntomas

Una clase accede a las partes internas de otra clase independiente.

Qué hacer

Recompensas

Message Chains

Qué hacer

Si las manipulaciones pertenecen al objeto que las recibe, utiliza Extract Method y Move Method para llevarlas a él.

Usa Hide Delegate para hacer que el método dependa de un único objeto. Esto puede implicar que se repita la delegación a lo largo de los objetos relacionados.

Recompensas

Puede reducir o exponer duplicidad.

Contraindicaciones

Esta refactorización es un equilibrio. Si aplicas demasiado Hide Delegate, puedes acabar encontrando en que todas las clases están tan ocupadas delegando que ninguna parece estar realizando el trabajo. A veces es menos confuso mantener una cadena de mensajes.

Middle Man

Qué hacer

Recompensas

Contraindicaciones

2019-03-20
Escrito por Samuel de Vega.
Etiquetas