Existe-t-il des directives pour décider quand une classe doit se trouver dans son propre assembly / DLL? Je vois souvent deux écoles de pensée:
1) Chaque "regroupement" de classes appartient à sa propre DLL, par exemple les référentiels, les services, les DTO, l'infrastructure, etc.
2) Tout doit être dans une seule DLL mais séparé via des espaces de noms / dossiers, par exemple avoir une DLL "Core" avec des espaces de noms supplémentaires, par exemple Core.Repositories, Core.Services, Core.DTO, etc.
Au travail, nous regroupons tout dans une seule assemblée appelée «Business». Il y a des dossiers mais il n'y a pas de véritable séparation - les objets métier (avec logique, dont certains ne devraient même pas être des classes) sont regroupés dans un dossier "BusinessObjects" sans précaution. Les éléments utilisés dans plusieurs classes se trouvent dans un dossier "Core". Les utilitaires sont dans un dossier "Utilitaires", l'infrastructure d'accès aux données est un dossier "Données" - vous avez l'idée.
Pour un nouveau module sur lequel je travaille, je veux / j'ai besoin d'avoir une couche d'accès aux données séparée (pensez à une implémentation rudimentaire du référentiel) mais je ne veux pas simplement le jeter sous le dossier "BusinessObjects" avec les 160 autres (!) classes là-bas. En même temps, je suis préoccupé par la création d'une nouvelle bibliothèque de classes car tout le monde a l'habitude de bourrer une classe dans la bibliothèque unique; un dossier / espace de noms pourrait cependant fonctionner.