【发布时间】:2010-02-02 23:48:17
【问题描述】:
假设您有一个对公司中多个项目有用的命名空间,格式为“MyCompany.Core”,您是否有一个以完全相同的方式命名的程序集或只是“Core”。为什么或为什么不?
【问题讨论】:
标签: c# naming-conventions shared-libraries
假设您有一个对公司中多个项目有用的命名空间,格式为“MyCompany.Core”,您是否有一个以完全相同的方式命名的程序集或只是“Core”。为什么或为什么不?
【问题讨论】:
标签: c# naming-conventions shared-libraries
使用标准 .NET 命名约定,程序集名称为 covered here。我将为您保存(短)阅读:
请为您的程序集 DLL 选择名称 这表明大块 System.Data 等功能。 程序集和 DLL 名称不必 对应于命名空间名称,但它 遵循命名空间是合理的 命名程序集时的名称。
考虑根据 以下模式:
<Company>.<Component>.dll
其中<Component>包含一个或多个 点分隔子句。例如,Contoso.WebControls.dll。
【讨论】:
我认为最好(这里有意见!)在它包含的根命名空间之后命名程序集,在您的情况下为 MyCompany.Core.dll。您永远不知道该文件是否会在公司之外传播,并且通常更容易跟踪它。
想象一下,如果 Microsoft 将 System.Core 命名为 Core.dll(System.Core),那么您有 Core.dll(MyCompany.Core)....想象一下它是如何快速变得毛茸茸的。
【讨论】:
我会将程序集命名为与根命名空间相同的名称。这样可以很容易地找出哪些代码在哪个程序集中,并防止与可能也使用模糊名称“Core.dll”的其他项目(来自其他公司)发生冲突。
【讨论】:
我更喜欢 MyCompany.ApplicationName.Core.DLL,如果有两个或多个来自 MyCompany 的应用程序,这消除了冲突的可能性。
【讨论】:
如果在企业环境中开发,此约定可能有用:
命名空间遵循 [DomainEntityName].[AssemblyName].[Purpose].[RelatedPurpose] 格式,其中 DomainEntityName 是根业务功能名称,AssemblyName 是支持业务需求的功能名称。
【讨论】:
基于微软DLL naming conventions,我更喜欢以下模式:
<Company>.<AppName>.<FeatureName>.<Layer>.dll
例如:
MyCompany.Sandwichery.Ordering.API
MyCompany.Sandwichery.Ordering.Domain
MyCompany.Sandwichery.Ordering.Infrastructure
【讨论】: