Ho iniziato a lavorare in questa azienda e il software è gestito in una soluzione di Visual Studio che include centinaia di progetti (C ++ e C #). Dopo aver sondato la soluzione per un paio di settimane, ho iniziato a chiedermi perché ci sono così tanti progetti. Non solo rallenta notevolmente VS, ma una ricostruzione può richiedere fino a un'ora.
Poiché un progetto di studio visivo corrisponde a un'unità di distribuzione fisica (sia esso una dll .NET, una lib di C ++ o un exe), ci sono ragioni per cui si desidera che il codice venga partizionato tra i progetti. Alcuni di questi motivi possono essere trovati in questo articolo .
Nel mio caso particolare, nessuna delle ragioni in quell'articolo era. Esistono circa 5 processi in esecuzione su più livelli, forse alcuni assemblaggi caricati in modo dinamico utilizzati per un modello plug-in e alcune infrastrutture che vengono raramente modificate.
Non vedo alcun bisogno di più di ~ 50 progetti VS per questa soluzione, e credo che unirli aumenterà la produttività e consentirà un ciclo di feedback più breve.
Quando ho provato a suggerire questo al gestore del software, la sua risposta è stata che stanno cercando di avere il maggior numero possibile di DLL in modo che quando pianificano di inviare una nuova funzione, QA può testare solo il comportamento delle dll modificate senza doversi preoccupare che sia stato fatto qualcos'altro. Ha detto che dal momento che una dll non è stata modificata, si comporterà allo stesso modo. Affinché ciò funzioni, mirano a un'elevata granularità delle unità di implementazione.
Questo ha senso per chiunque? Non vedo la differenza nell'effetto sul comportamento tra la modifica di una singola riga in un progetto che ha una singola enorme dll e la modifica della stessa riga in un progetto che include centinaia di DLL.
Modifica
Sto cercando una risposta sull'utilizzo di assiemi / progetti come mezzo per separare le preoccupazioni logiche e il suo effetto sullo sforzo di test. Direi addirittura che molti assembly potrebbero darti più scenari di test a causa di incompatibilità con le versioni.
Quindi la mia domanda distillata è: Quando partirai il tuo codice su progetti / assiemi invece di spazi dei nomi nello stesso assembly, dato che non ci sono vincoli di runtime, e perché?
EDIT 2
Credo che sto cercando qualcosa come questo articolo . Tuttavia, sono riluttante a postare questa risposta come risposta e accetto prima di vedere se ci sono opinioni diverse nella community.