Declarative design
Mi sono finalmente deciso a leggere Domain Driven Design di Evans. I due recenti post di Carlo e M. Vaccari sono stati l’ input necessario per colmare la lacuna (non l’ ho ancora assimilato, ci vorrà tempo, ho dato solo una lettura superficiale). Mi è piaciuta molto la parte relativa al design dichiarativo, che secondo me potrebbe essere una chiave di lettura per i problemi di cui si parla nei due post. D’ altronde un software ad oggetti dovrebbe essere concepito come un insieme di moduli che collaborano tra di loro, e l’ approccio dichiarativo impone che si prendano un certo numero di entità specificando come debbano essere utilizzate assieme per ottenere un certo risultato. Il tutto poi può essere fatto a livelli di astrazione diversa (non nel senso di interfacce o classi astratte), cercando di avvicinarsi quanto più possibile al dominio del problema. Non sono affatto convinto, come spesso sento dire, che inserendo interfacce a tappeto e incapsulando codice procedurale si ottenga riutilizzo (di sicuro non si ottiene codice parlante); credo che un design dichiarativo con una metafora del sistema azzeccata sia l’ unico strumento per sperare di avere un qualche riutilizzo della logica di business ed un codice vicino al dominio del problema.