Ho creato un'applicazione Java lato server di circa 10.000 righe di codice e su una revisione del codice un collega mi ha fatto notare che quando si sviluppa una nuova funzione aziendale, devo toccare diversi file. La mia spiegazione è la seguente:
-
In un'architettura a più livelli, fornire una funzionalità aziendale aggiuntiva potrebbe richiedere piccole modifiche / aggiunte a tutti i livelli. Ad esempio, in un'applicazione classica a tre livelli con un API REST / logica aziendale / livello di accesso ai dati, l'aggiunta di una nuova funzionalità potrebbe richiedere di toccare questi tre livelli.
-
Quando si sviluppa una nuova funzionalità, si presenta facilmente la possibilità di refactoring del codice esistente per mantenere il codice di buona qualità (complessità ciclomatica, lunghezza dell'albero di dipendenza, ecc.) e DRY. Dato che ho una copertura di prova tra il 70% e l'80% lo faccio aggressivamente.
-
A causa delle piccole modifiche del punto 2, potrei dover toccare leggermente i test per tali funzioni
-
Poiché toccherò N layer, dovrò aggiornare ogni unit test per ogni livello + almeno un test di integrazione
Un approccio diverso sarebbe ovviamente quello di sviluppare un'applicazione più "Componentistica", in cui ogni funzionalità aziendale è ottenuta attraverso un modulo indipendente. Ho ragione nel considerare meglio un'architettura a strati, almeno nel contenere il costo totale di proprietà e lo sviluppo dell'applicazione?