Ci sono delle linee guida per decidere quando una classe dovrebbe trovarsi nel proprio assembly / DLL? Vedo spesso due scuole di pensiero:
1) Ogni "raggruppamento" di classi appartiene alla propria DLL, ad esempio repository, servizi, DTO, infrastruttura, ecc.
2) Tutto dovrebbe essere in una singola DLL ma separato da spazi dei nomi / cartelle, ad esempio avere una DLL "Core" con spazi dei nomi aggiuntivi, ad esempio Core.Repositories, Core.Services, Core.DTO, ecc.
Al lavoro, raccogliamo tutto in un'unica Assemblea chiamata "Business". Ci sono alcune cartelle ma non c'è una vera separazione: gli oggetti business (con la logica, alcuni dei quali non dovrebbero nemmeno essere classi) sono raggruppati in una cartella "BusinessObjects" senza cura. Le cose utilizzate in più di una classe si trovano in una cartella "Core". I programmi di utilità si trovano in una cartella "Programmi di utilità", l'infrastruttura di accesso ai dati è una cartella "Dati".
Per un nuovo modulo su cui sto lavorando, voglio / ho bisogno di avere un livello di accesso ai dati separato (pensate a un'implementazione di repository rudimentale) ma non voglio semplicemente buttarlo nella cartella "BusinessObjects" con l'altro 160 (!) lezioni lì. Allo stesso tempo, sono preoccupato per la creazione di una nuova libreria di classi poiché tutti sono abituati a riempire una classe nella singola libreria; una cartella / spazio dei nomi potrebbe funzionare comunque.