In qualità di programmatori, ritengo che il nostro obiettivo sia fornire buone astrazioni sul modello di dominio e sulla logica aziendale specificati. Ma dove dovrebbe finire questa astrazione? Come rendere il trade-off tra l'astrazione e tutti i suoi benefici (flessibilità, facilità di modifica ecc.) e facilità di comprensione del codice e tutti i suoi vantaggi.
Credo che tendo a scrivere codice troppo astratto e non so quanto sia bello; Spesso tendo a scriverlo come se fosse una sorta di micro-framework, che consiste in due parti:
- Micro-Moduli collegati nella micro-struttura: questi moduli sono facili da comprendere, sviluppare e mantenere come unità singole. Questo codice rappresenta fondamentalmente il codice che esegue effettivamente le funzionalità, descritto nei requisiti.
- Collegamento del codice; ora qui credo che sia il problema. Questo codice tende ad essere complicato perché a volte è molto astratto ed è difficile da comprendere all'inizio; ciò è dovuto al fatto che è solo pura astrazione, la base nella realtà e la logica aziendale che viene eseguita nel codice presentato 1; da questo motivo non ci si aspetta che questo codice venga modificato una volta testato.
È un buon approccio alla programmazione? Che, avendo cambiato codice molto frammentato in molti moduli e molto facile da capire e codice non mutevole molto complesso dall'astrazione POV? Tutto il codice dovrebbe essere uniformemente complesso (cioè 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, corretto, modificato e il "codice di collegamento" è piuttosto difficile.
Nota: non si tratta di leggibilità del codice! Entrambi i codici a 1 e 2 sono leggibili, ma il codice a 2 viene fornito con astrazioni più complesse mentre il codice 1 viene fornito con astrazioni semplici.