Именование "основной" Ассамблеи
Я знаю, что это несколько субъективно, но мне интересно, существует ли общепринятый стандарт для именования сборок, содержащих некоторые "основные" функции.
Скажем, вы получили более крупные проекты, с ассемблиями вроде
- 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
Теперь, когда "просто выберите один и продолжай" не вызовет Армагеддон, мне все равно хотелось бы знать, есть ли "принятый" способ назвать эти сборки.
Ответы
Ответ 1
С .Net это относительно легко изменить, поэтому я бы пошел с удобством.
Меньше, больше, сборки собираются быстрее, чем многие маленькие, поэтому я бы начал с вашего "основного" материала в качестве пространства имен внутри Company.Product.dll и позже разделил его, если вам нужно.
Ответ 2
Все эти "root", "core", "common" и т.д. действительно являются плохими соглашениями об именах.
Общие вещи должны лежать в корневом пространстве имен, например, в .NET, string
, int
и другие вещи, которые являются "ядром" или "общим", находятся в корневом пространстве System
-namespace.
Не используйте пространства имен для более простого сглаживания ваших папок в Visual Studio, но структурируйте его после того, что он содержит, и того, что он использовал для.
System.Security
содержит общие вещи безопасности, о которых, например, System.Xml
не нужно знать, если вы явно не хотите эту функциональность.
System.Security.Cryptography
- это пространство под-имен. Криптография - это безопасность, но защита явно не криптография.
Таким образом, System.Security.Cryptography
имеет полное понимание его родительского пространства имен и может подразумевать использование всех классов внутри своего родителя.
Я бы сказал, что System.Core.dll
был slip-up на стороне Microsoft. Они, должно быть, исчерпали идеи или имена DLL.
Обновление. MSDN имеет несколько обновленную статью которая пытается объяснить Microsoft мышление по этому вопросу.
Ответ 3
Мне обычно нравятся имена, которые описывают, что находится внутри каждой сборки.
Понимаете, если вы назовете что-то вроде .Core, то в большой команде он может расти очень быстро, так как люди рассмотрят возможность размещения в этой сборке очень распространенной вещи.
Итак, я думаю, что на самом деле не должно быть одной основной сборки.
Ответ 4
Я использовал .Core,.Framework и .Common.
Ответ 5
Мы используем эту модель:
- Company.Core.dll
- Company.WinControls.dll
- Company.WebControls.dll
- Company.Product.Core.dll
- Company.Product.WinControls.dll
- Company.Product.WebControls.dll
и др.
Ответ 6
Я всегда делаю .Core.dll.
Ответ 7
Тот, который я использую наиболее часто и, кажется, люблю, потому что я не вижу, чтобы другие люди использовали его Root
Я обычно буду делать
CompanyName.Root
или
SomethingMeaningfulToMe.Root
Ответ 8
Это одна из тех, которые зависят от вопросов. Если ваш код и вы работаете в небольшой команде, я бы использовал любое соглашение об именах, которое имеет смысл для вас. Тем не менее, я видел, что в больших пространствах имен кодов базы данных позволяют разработчикам нисходящего потока открывать функциональные возможности без необходимости документирования или обучения. мы используем модель. стандартизация пространств имен упрощала разработчикам переводить команду в команду.
BussinessName.Division.Layer
Ответ 9
i также используется .Core, особенно для .dll
Все это вопрос вкуса imo, если корневое пространство имен - это название компании, я чувствую. Core/framework/common более описателен, чем просто название компании.
Однако, если вы работаете над чем-то вроде проекта с открытым исходным кодом, где имя пространства dll/namespace также является именем проекта,.Core/../может быть немного избыточным.
В .NET Framework и других библиотеках Microsoft есть много примеров, в которых используются оба соглашения. например, есть System.dll и System.Core.dll:)
Ответ 10
Core - это очень значимое и понятное для понимания соглашение об именах, и оно не конфликтует с каким-либо пространством имен .net, поэтому это очень хорошая практика.
Я настоятельно рекомендую инкапсулировать в каждой сборке службу, которую он предположил, предоставить прикладной программе, которая ее использует, и не смешивать разные домены функций в одной сборке.
Мы используем
CSG.Core
CSG.Data
CSG.Services
...
В ядре мы включаем классы, которые, вероятно, будут использоваться во всех наших продуктах: ведение журнала, сборные расширения, обобщения, расширения конфигурации, безопасность, проверка и т.д.
Несмотря на то, что сборка множества сборок происходит медленнее, чем меньше и больше сборки, она оптимизирует развертывание, поскольку вы развертываете только те классы, которые используются вашей системой, и не содержат много классов, которые не используются только потому, что вы хотите сохранить время компиляции.
Когда вы называете свои пространства имен, я настоятельно рекомендую избежать повторения одного и того же слова на другом уровне пространства имен. Например, избегайте следующего:
YourCompany.Core
YourCompany.YourProduct.Core
Поместите ядро в свою компанию или в Myproduct, но не в оба. Это может быть очень запутанным, если, например, ваше использование выглядит так: использование YourCompany; с помощью YourCompany.YourProduct;
Когда вы наберете Core.SomeClass, это будет очень запутанным, откуда пришел этот класс, и если у вас есть 2 класса с тем же именем, это вызовет конфликт.