Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactorizacion - Form Template Method #28

Open
vic28code opened this issue Aug 11, 2024 · 0 comments
Open

Refactorizacion - Form Template Method #28

vic28code opened this issue Aug 11, 2024 · 0 comments

Comments

@vic28code
Copy link

Form Template Method
Problema identificado: En la clase Bingo, existe un método llamado iniciarTiempo que se encarga de gestionar un temporizador. Este método realiza varias tareas:
• Incrementa los segundos, minutos y horas.
• Formatea el tiempo transcurrido en una cadena.
• Actualiza la interfaz de usuario con el tiempo formateado.
• Pausa el hilo durante un segundo entre cada actualización.
Es un método muy específico que mezcla la lógica del temporizador con la actualización de la interfaz. Si otras clases del proyecto necesitan un temporizador similar, tendrían que duplicar y adaptar este código, lo que podría llevar a problemas de mantenimiento, duplicación de código, y dificultad para realizar cambios consistentes en todos los temporizadores.
Técnica de refactorización aplicada: Form Template Method, crea un método plantilla y mueve las partes específicas a métodos abstractos en una clase base.
Beneficios de la Refactorización:
• Reutilización de Código: La lógica del temporizador se centraliza en una clase base, permitiendo que múltiples clases la reutilicen sin duplicación.
• Mantenimiento Simplificado: Los cambios en la lógica del temporizador se realizan en un solo lugar, propagándose automáticamente a todas las subclases, lo que reduce la carga de mantenimiento.
• Modularidad y Flexibilidad: La separación de responsabilidades permite que la lógica del temporizador sea independiente, facilitando la personalización y extensión en diferentes contextos.
Solución implementada:
• Antes: La clase Bingo contenía un método iniciarTiempo que gestionaba toda la lógica del temporizador, incluyendo la actualización de segundos, minutos, horas, y la actualización de la interfaz de usuario. Esta implementación mezclaba la lógica del temporizador con la lógica específica de la interfaz, dificultando la reutilización del código.

imagen

• Después: El código es más fácil de leer y entender porque las responsabilidades están claramente separadas y organizadas en métodos y clases específicos.

imagen
imagen

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant