El instinto habitual es eliminar cualquier duplicación de código que vea en el código. Sin embargo, me encontré en una situación donde la duplicación es ilusoria .
Para describir la situación con más detalles: estoy desarrollando una aplicación web, y la mayoría de las vistas son básicamente las mismas: muestran una lista de elementos que el usuario puede desplazarse y elegir, una segunda lista que contiene elementos seleccionados y un "Guardar "para guardar la nueva lista.
Me pareció que el problema es fácil. Sin embargo, cada vista tiene sus propias peculiaridades: a veces es necesario volver a calcular algo, a veces debe almacenar algunos datos adicionales, etc. Esto lo resolví insertando ganchos de devolución de llamada en el código lógico principal.
Hay tantas diferencias mínimas entre las vistas que cada vez es menos mantenible, porque necesito proporcionar devoluciones de llamada para básicamente todas las funciones, y la lógica principal comienza a parecerse a una gran secuencia de invocaciones de devolución de llamada. Al final, no estoy ahorrando tiempo ni código, porque cada vista tiene su propio código que se ejecuta, todo en devoluciones de llamada.
Los problemas son:
- las diferencias son tan pequeñas que el código se ve casi exactamente igual en todas las vistas,
- hay tantas diferencias que cuando miras los detalles, codificar no es un poco similar
¿Cómo debo manejar esta situación?
¿Tener una lógica central compuesta completamente de llamadas de devolución de llamada es una buena solución?
¿O debería preferir duplicar el código y descartar la complejidad del código basado en la devolución de llamada?