Técnicas de refactorización: Introducir método extranjero
Cuando te encuentras desarrollando software, es común enfrentarte a situaciones en las que una clase de utilidad no contiene el método necesario, y no tienes la posibilidad de agregar dicho método directamente a las clases existentes.
En estos casos, puedes recurrir a la técnica de refactorización conocida como "introducir método extranjero", que consiste en agregar el método requerido a una clase de cliente y pasarle un objeto de la clase de utilidad como argumento. En este artículo, exploraremos de manera concisa esta técnica y cómo puede ayudarte a resolver este tipo de escenarios.
Show me the Code
Antes
Después
De las imágenes anteriores, y sus respectivos códigos, puedes identificar la diferencia principal entre ellos. En el código de “después”, se ha realizado una mejora al mover la lógica de obtener el día siguiente a una función estática privada llamada nextDay(). Esta decisión tiene beneficios significativos en términos de legibilidad y reutilización del código. Ahora, el cálculo del día siguiente se encuentra encapsulado en un método separado, lo que permite invocarlo desde cualquier parte de la clase ‘Report’.
¿Por qué utilizar “introducir método extranjero”?
La técnica de "introducir método extranjero" es altamente beneficiosa en situaciones en las que te encuentras trabajando con código que utiliza datos y métodos de una clase específica, pero deseas que ese código esté contenido dentro de un nuevo método en esa misma clase. Sin embargo, no puedes agregar directamente el método a la clase debido a que esta pertenece a una biblioteca de terceros o a un código que no controlas.
La principal ventaja de utilizar la técnica de "introducir método extranjero" radica en la posibilidad de eliminar la repetición de código en múltiples lugares dentro de tu software. Al mover el código a un método nuevo en la clase de interés, como hemos dicho antes, puedes utilizar ese método en lugar de repetir el mismo código en diferentes partes de tu programa.
Al utilizar esta técnica, también puedes pasar un objeto de la clase de utilidad como argumento al nuevo método. Esto te otorga acceso a todos los campos y funcionalidades de esa clase de utilidad. En el nuevo método, tienes la libertad de realizar cualquier acción necesaria, como si el método formara parte integral de la clase de utilidad en sí.
Pros y cons de “introducir método extranjero”
La técnica de "introducir método extranjero" puede proporcionar diversos beneficios en el desarrollo de software, pero también es importante considerar algunos inconvenientes. A continuación, te presento los pros y contras más destacados de esta técnica:
Pros:
- Elimina la duplicación de código: Si te encuentras repitiendo ciertos fragmentos de código en diferentes lugares, puedes reemplazarlos por una llamada a un método. Esto resulta beneficioso en comparación con la duplicación del código, incluso si el método extranjero se encuentra en un lugar subóptimo.
Contras:
- Dificultad en la comprensión futura del código: Las razones para tener un método de una clase de utilidad en una clase de cliente pueden no ser evidentes para quienes mantengan el código en el futuro. Sin una documentación adecuada o un contexto claro, puede resultar desafiante para otros desarrolladores comprender la lógica detrás de la introducción del método extranjero. Se debe tener cuidado al aplicar esta técnica y asegurarse de documentar adecuadamente el propósito y la razón de la introducción del método extranjero.
Es importante tener en cuenta tanto los beneficios como los inconvenientes al utilizar la técnica de "introducir método extranjero". Aunque puede ayudar a eliminar la duplicación de código y mejorar la legibilidad, es fundamental considerar la claridad y comprensión del código por parte de otros desarrolladores que puedan darle mantenimiento en el futuro.
Conclusión
En resumen, la técnica de "introducir método extranjero" se convierte en una valiosa herramienta cuando deseas encapsular y reutilizar código dentro de una clase determinada, pero no puedes modificar directamente dicha clase.
Esto te permite evitar la duplicación de código, mejorar la organización y la legibilidad del software, y aprovechar las funcionalidades de otras clases para llevar a cabo operaciones específicas en un contexto particular.
¿Usas la técnica “introducir método extranjero”? ¿Qué tal la experiencia? ¡Coméntalo abajo!
Fuente: