Come programmatori, ritengo che il nostro obiettivo sia fornire buone astrazioni sul modello di dominio e sulla logica di business forniti. Ma dove dovrebbe fermarsi questa astrazione? Come fare il compromesso tra l'astrazione e tutti i suoi benefici (flessibilità, facilità di modifica, ecc.) E facilità di comprensione del codice e di tutti i suoi benefici.
Credo di tendere a scrivere codice troppo astratto e non so quanto sia buono; Tendo spesso a scriverlo come se fosse una specie di micro-framework, che consiste di due parti:
- Micro-moduli collegati nel micro-quadro: questi moduli sono facili da capire, sviluppare e mantenere come singole unità. Questo codice rappresenta sostanzialmente il codice che svolge effettivamente le funzioni funzionali, descritto nei requisiti.
- Codice di connessione; ora qui credo che si pone il problema. Questo codice tende ad essere complicato perché a volte è molto astratto ed è difficile da capire all'inizio; ciò deriva dal fatto che è solo pura astrazione, la base nella realtà e la logica aziendale vengono eseguite nel codice presentato 1; da questo motivo non è previsto che questo codice venga modificato una volta testato.
È un buon approccio alla programmazione? Che, avendo cambiare il codice molto frammentato in molti moduli e molto facile da capire e un codice che non cambia molto complesso dall'astrazione POV? Se tutto il codice fosse uniformemente complesso (ovvero il codice 1 più complesso e interconnesso e il codice 2 più semplice) in modo che chiunque lo guardi possa capirlo in un ragionevole lasso di tempo ma il cambiamento è costoso o la soluzione presentata sopra è buona, dove "cambiare codice" è molto facile da capire, eseguire il debug, cambiare e "collegare il codice" è un po 'difficile.
Nota: non si tratta di leggibilità del codice! Entrambi i codici 1 e 2 sono leggibili, ma il codice 2 viene fornito con astrazioni più complesse mentre il codice 1 viene fornito con astrazioni semplici.