Присвоение имени "основной" сборке

Я знаю, что это несколько субъективно, но мне интересно, существует ли общепринятый стандарт для именования сборок, содержащих некоторые «основные» функции.

Допустим, у вас есть более крупные проекты с такими сборками, как

  • Company.Product.WebControls.dll
  • Company.Product.Net.dll
  • Company.Product.UserPages.dll

и у вас есть набор «основных» классов, таких как обработчик глобальных ошибок, функция глобального журнала и т. д.

Как вообще назвали бы такую ​​сборку? Вот некоторые вещи, которые я имел в виду:

  • Company.Product.dll
  • Company.Product.Core.dll
  • Company.Product.Global.dll
  • Company.Product.Administration.dll

Теперь, хотя «просто выберите одну и продолжайте» не вызовет Армагеддон, я все же хотел бы знать, есть ли «принятый» способ назвать эти сборки.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
22
0
3 107
10
Перейти к ответу Данный вопрос помечен как решенный

Ответы 10

Я всегда делаю .Core.dll.

Ответ принят как подходящий

С .Net это относительно легко изменить, поэтому я бы пошел с удобством.

Меньшее количество сборок большего размера компилируется быстрее, чем многие мелкие, поэтому я бы начал с вашего «основного» материала в виде пространства имен внутри Company.Product.dll и разделил его позже, если вам нужно.

Обычно мне нравятся имена, описывающие, что находится внутри каждой сборки.

Видите ли, если вы назовете что-то как .Core, то в большой команде он может очень быстро разрастаться, так как люди будут рассматривать возможность включения очень обычных вещей в эту сборку.

Итак, я считаю, что единой основной сборки быть не должно.

У меня нет проблем с наличием «базовой» сборки как таковой, но вы правы, говоря, что она может быстро стать свалкой для всех видов кода при работе в большой команде.

Mark Heath 29.09.2008 00:25

Я использовал .Core, .Framework и .Common.

Тот, который я использую наиболее часто и, кажется, люблю, потому что я не вижу, чтобы другие люди его использовали, - это Root.

Я обычно делаю

CompanyName.Root

или же

SomethingMeaningfulToMe.Root

Мы используем эту модель:

  • Company.Core.dll
  • Company.WinControls.dll
  • Company.WebControls.dll
  • Company.Product.Core.dll
  • Company.Product.WinControls.dll
  • Company.Product.WebControls.dll

и Т. Д.

Все эти «корень», «ядро», «общие» и так далее - это вероятно, не самые лучшие соглашения об именах.

Общие вещи должны находиться в корневом пространстве имен, как в .NET, string, int, и другие вещи, которые являются «основными» или «общими», находятся в корневом пространстве имен System.

Не используйте пространства имен, чтобы упростить свертывание папок в Visual Studio, но структурируйте его после что он содержит и для чего он используется.

System.Security содержит общие элементы безопасности, о которых, например, System.Xml не нужно знать, если вам явно не нужна эта функция.

System.Security.Cryptography - это подпространство имен. Криптография - это безопасность, но безопасность - это явно не криптография.

Таким образом, System.Security.Cryptography имеет полное представление о его родительском пространстве имен и может неявно использовать все классы внутри своего родителя.

Я бы сказал, что System.Core.dll был ошибка со стороны Microsoft. У них, должно быть, закончились идеи или имена DLL.

Обновлять: MSDN имеет несколько обновленный статья, которая пытается объяснить мнение Microsoft по этому поводу..

Следует отметить, что .NET BCL делает имеет System.Core.dll сборка, но не имеет System.Core пространство имен. Так что, с вашей точки зрения, MS все сделала правильно.

Oybek 15.06.2013 01:07

@Oybek Да, это должно быть "у них, должно быть, закончились идеи или DLL-имена".

Seb Nilsson 15.06.2013 01:10

Я также использовал .Core, особенно для .dll

Это все дело вкуса, я думаю, если корневое пространство имен - это название компании, я чувствую, что .Core / framework / common более наглядно, чем просто название компании.

Однако, если вы работаете над чем-то вроде проекта с открытым исходным кодом, где имя пространства имен dll / также является именем проекта, .Core /../ может быть немного избыточным.

Есть много примеров в .NET framework и других библиотеках Microsoft, где используются оба соглашения. например, есть System.dll и System.Core.dll :)

Это один из многосторонних вопросов. Если это ваш код и вы работаете в небольшой команде, я бы использовал любое соглашение об именах, которое имеет для вас смысл. Я видел, однако, в больших базах кода пространства имен, позволяющие последующим разработчикам обнаруживать функциональные возможности без необходимости документации или обучения. мы используем модель. стандартизация пространств имен упростила для разработчиков переход от одной команды к другой.

BussinessName.Division.Layer

Ядро очень содержательное и легкое для понимания соглашение об именах, и оно не конфликтует с каким-либо пространством имен .net framework, поэтому это очень хорошая практика.

Я настоятельно рекомендую инкапсулировать в каждой сборке ту службу, которую она должна предоставлять приложению, которое ее использует, а не смешивать разные домены функций в одной сборке.

Мы используем

CSG.Core
CSG.Data
CSG.Services
...

В ядро ​​мы включаем классы, которые, вероятно, будут использоваться во всех наших продуктах: ведение журнала, расширения коллекций, универсальные шаблоны, расширения конфигурации, безопасность, проверка и т. д.

Хотя компиляция многих сборок происходит медленнее, чем меньшее количество сборок большего размера, это оптимизирует ваше развертывание, поскольку вы развертываете только классы, которые используются вашей системой, и не содержит много классов, которые не используются только потому, что вы хотели сэкономить время компиляции.

Когда вы называете свои пространства имен, я настоятельно рекомендую избегайте повторения одного и того же слова на разных уровнях пространства имен. Например, избегайте следующего:

YourCompany.Core
YourCompany.YourProduct.Core

Либо поместите ядро ​​в YourCompany, либо в Myproduct, но не в оба. Это может сбивать с толку, если, например, ваше использование выглядит так: используя YourCompany; используя YourCompany.YourProduct;

Когда вы наберете Core.SomeClass, будет очень непонятно, откуда взялся этот класс, а если у вас есть 2 класса с одинаковым именем, это вызовет конфликт.

Другие вопросы по теме