Como programadores, creo que nuestro objetivo es proporcionar buenas abstracciones sobre el modelo de dominio y la lógica empresarial dados. ¿Pero dónde debería detenerse esta abstracción? Cómo hacer el equilibrio entre la abstracción y todos sus beneficios (flexibilidad, facilidad de cambio, etc.) y la facilidad de entender el código y todos sus beneficios.
Creo que tiendo a escribir código demasiado abstracto y no sé qué tan bueno es; A menudo tiendo a escribirlo como si fuera una especie de micro-marco, que consta de dos partes:
- Micro-módulos que están conectados en el micro-marco: estos módulos son fáciles de entender, desarrollar y mantener como unidades individuales. Básicamente, este código representa el código que realmente hace las cosas funcionales, descritas en los requisitos.
- Código de conexión; Ahora aquí creo que está el problema. Este código tiende a ser complicado porque a veces es muy abstracto y es difícil de entender al principio; esto se debe al hecho de que es solo una abstracción pura, la base en la realidad y la lógica de negocios se realiza en el código presentado 1; por este motivo, no se espera que este código se modifique una vez probado.
¿Es este un buen enfoque en la programación? ¿Que, tener código cambiante muy fragmentado en muchos módulos y muy fácil de entender y código no cambiante muy complejo desde la abstracción POV? Si todo el código fuera uniformemente complejo (es decir, el código 1 es más complejo e interconectado y el código 2 más sencillo) para que cualquiera que lo busque pueda entenderlo en un tiempo razonable, pero el cambio es costoso o la solución presentada es buena, donde El "cambio de código" es muy fácil de entender, depurar, cambiar y el "código de enlace" es algo difícil.
Nota: esto no se trata de la legibilidad del código! Tanto el código 1 como el 2 son legibles, pero el código 2 viene con abstracciones más complejas, mientras que el código 1 viene con abstracciones simples.