Существуют ли рекомендации для принятия решения, когда класс должен находиться в своей сборке / DLL? Я часто вижу две школы мысли:
1) Каждая «группа» классов принадлежит своей собственной DLL, например, репозитории, сервисы, DTO, инфраструктура и т. Д.
2) Все должно быть в одной DLL, но разделено через пространства имен / папки, например, иметь «Core» DLL с дополнительными пространствами имен, например Core.Repositories, Core.Services, Core.DTO и т. Д.
На работе мы просто объединяем все в одну сборку под названием «Бизнес». Есть несколько папок, но нет реального разделения - бизнес-объекты (с логикой, некоторые из которых не должны быть даже классами) без заботы помещаются в папку «BusinessObjects». Вещи, используемые более чем в одном классе, находятся в папке «Core». Утилиты находятся в папке «Утилиты», инфраструктура доступа к данным - это папка «Данные».
Для нового модуля, над которым я работаю, я хочу / должен иметь отдельный слой доступа к данным (представьте, как элементарную реализацию репозитория), но я не хочу просто бросать его в папку «BusinessObjects» с другими 160 (!) занятия там. В то же время я обеспокоен созданием новой библиотеки классов, поскольку каждый привык вставлять класс в одну библиотеку; однако папка / пространство имен может работать.