Refactorizar un pequeño proyecto Python aplicando los principios SOLID. El sistema actual es funcional, pero está lleno de antipatrones de diseño y clases con múltiples responsabilidades. Tu misión será mejorar su estructura sin romper su comportamiento.
El proyecto task_manager simula un sistema simple de gestión de tareas. Permite crear tareas, notificar usuarios y exportar los datos.
Actualmente, todas estas funcionalidades están centralizadas en una sola clase llamada TaskService, lo que provoca varios problemas de diseño.
La clase TaskService hace de todo: crear tareas, notificarlas, y exportarlas.
La lógica de exportación está acoplada mediante condicionales. Para agregar un nuevo formato, hay que modificar el código.
El servicio está acoplado directamente a la lógica interna de notificación y exportación.
Puedes extender el proyecto para explorar estos principios creando subclases de tareas o interfaces específicas para distintos canales de notificación.
- Analiza el código actual y detecta qué partes violan los principios SOLID.
- Refactoriza aplicando un principio a la vez, usando ramas o commits separados.
- Documenta tus cambios:
- Cada commit debe indicar claramente qué principio estás aplicando.
- Agrega un archivo
SOLID_JUSTIFICACION.mdexplicando tus decisiones.
- Crea clases específicas para
TaskNotifier,TaskExporter, etc. - Usa herencia o composición para separar responsabilidades.
- Usa interfaces o clases base para permitir extensibilidad.
- Adjuntar en la descripcion un texto explicando y justificando los cambios.
¡Buena suerte!