Como programadores, siento 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 una compensación entre la abstracción y todos sus beneficios (flexibilidad, facilidad de cambio, etc.) y la facilidad de comprender 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. Este código básicamente representa el código que realmente hace las cosas funcionales, descritas en los requisitos.
- Código de conexión; ahora aquí creo que se encuentra el problema. Este código tiende a ser complicado porque a veces es muy abstracto y es difícil de entender al principio; esto surge debido al hecho de que es solo pura abstracción, la base en la realidad y la lógica de negocios que se realiza en el código presentado 1; Por esta razón, no se espera que este código se cambie una vez probado.
¿Es este un buen enfoque en la programación? ¿Que, teniendo código cambiante muy fragmentado en muchos módulos y muy fácil de entender y código cambiante muy complejo desde el punto de vista de abstracción? Si todo el código es uniformemente complejo (es decir, el código 1 es más complejo e interconectado y el código 2 es más simple) para que cualquiera que lo revise pueda entenderlo en un tiempo razonable, pero el cambio es costoso o la solución presentada anteriormente es buena, donde "cambiar el código" es muy fácil de entender, depurar, cambiar y "vincular el código" es un poco difícil.
Nota: ¡no se trata de la legibilidad del código! Ambos códigos en 1 y 2 son legibles, pero el código en 2 viene con abstracciones más complejas, mientras que el código 1 viene con abstracciones simples.