Это действительно субъективный вопрос, и у каждой организации будет совершенно другая или очень похожая модель.Там не лучший ответ, но есть хорошие и плохие подходы.Распространенная модель в отрасли - основывать имена вашей библиотеки на функциях.Например, в одном из наших продуктов у нас есть:
- ProductName
- ProductName.Activation
- ProductName.Activation.Service
- ProductName.Core
- ProductName.Data
- ProductName.Data.Customers
- ProductName.Data.Engine
- ProductName.Instrumentation
- ProductName.Security
- ProductName.ShellUI
- ProductName.ShellUI.Windows
- ProductName.Win32
Обычно хорошо следовать шаблону, аналогичному .NET Framework.подход, или по особенности другой.Некоторые могут возразить, что вы не захотите давать своим сборкам осмысленные имена, которые могут раскрыть уязвимые части вашего приложения или привлечь внимание, но вы никогда не помешаете пиратам стать пиратами.
Другие предпочитают давать свои сборки очень короткимиимена, которые до сих пор делают даже сегодня Microsoft.(например, mscorlib.dll).
Полагаю, все зависит от проекта и от того, что происходит.Я не всегда придерживаюсь одного и того же эмпирического правила, но в 99% случаев я следую общему шаблону, и у прежней компании, в которой я работал, также были свои шаблоны и практики.
Насколькологичная организация внутри ваших проектов, ну, удачи.Большинство других разработчиков, с которыми я говорил, говорили то же самое, что и я.«Я просто выбрал структуру / имя и пошел с ним».Конечно, не вслепую, но с некоторой продуманностью, но сложно найти лучший подход, только рекомендации.
Мое предложение состоит в том, чтобы организовать его по функциям, потому что это облегчает управление проектом.Вы знаете, что Module1 обрабатывает Part1 системы, а Module2 обрабатывает Part2 и так далее.Примером может быть ProductName.Data.dll.В моем проекте он обрабатывает все связанные с данными операции, такие как настройки, настройки и взаимодействие с базой данных, в то время как ProductName.Data.Engine - это инфраструктура, которая позволяет ProductName.Data легко взаимодействовать с уровнем данных.(В данном случае ProductName.Engine - это элемент Entity Framework с другими пользовательскими классами и необходимыми частями фреймворка.)
Полагаю, я придерживаюсь еще одного практического правила, если в Module1 есть много частей, составляющих часть 1 приложения.Я бы сохранил все это в Module1.Если только в ProductName.Data.Engine эта функция была настолько велика, она была приспособлена для собственной библиотеки для более удобного управления.
В общем, удачи, потому что организация и структура - это постоянная борьба по мере того, как проекты становятся большими, но если вы сохраните все аккуратно, организованно, хорошо найденным и понятым, тогда вашим проектом будет легко управлять.