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 en la que 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 desplazar y elegir, una segunda lista que contiene elementos seleccionados y un botón "Guardar" para guardar la nueva lista.
Me pareció que el problema es fácil. Sin embargo, cada vista tiene sus propias peculiaridades: a veces necesitas volver a calcular algo, a veces debes almacenar algunos datos adicionales, etc. Estos, los resolví insertando enlaces de devolución de llamada en el código lógico principal.
Hay tantas diferencias minúsculas entre las vistas que cada vez son menos fáciles de mantener, porque necesito proporcionar devoluciones de llamada para prácticamente toda la funcionalidad, y la lógica principal comienza a parecer una gran secuencia. de invocaciones de devolución de llamada. Al final no estoy guardando ningún tiempo o 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 al mirar los detalles, el código no se parece en nada
¿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 duplicar el código y eliminar la complejidad del código basado en la devolución de llamada?