Este es un dilema que se nos presenta a diario cuando se requiere extender la funcionalidad de una clase o modificar el diseño para agregar funcionalidad. Para muchos, el tiempo apremia y lo más evidente es resolver las cosas de una manera que, a priori, parece la más sencilla: un parche (*).
Pero cuidado, resulta muy fácil caer en una trampa que nos armamos nosotros mismos. Muchas veces, la solución más sencilla en tiempo, resulta una contra, ya que la misma, no es escalable y el tiempo que no gastamos hoy haciendo un refactoring “complejo”, lo gastamos más adelante (multiplicado por N) debido a que esa lógica ya esta muy arraigada en la aplicación.
Un caso común, resulta del agregado de métodos o propiedades en clases a las que no les corresponde esa responsabilidad. Esto puede pasar por varios motivos:
- Desconocimiento del framework propio: Se desconoce la existencia de otra clase que ya posee esa responsabilidad.
- Falta de tiempo: Para no buscar en todo el framework si ya existe una clase a quién agregarle esta funcionalidad, se agrega en otra que podría soportarla.
