【发布时间】:2017-06-04 10:25:40
【问题描述】:
我在网络上没有找到任何关于 .NET 解决方案可接受的命名约定的信息,该解决方案包含 .NET Standard、.NET Core 和 .NET Framework 项目。
在我的例子中,我们的 .NET Framwork 项目中有以下约定:
[CompanyName].[TechnologyName].[Feature]
现在我们要将其移植到 .NET Standard 和 .NET Core。并非该功能中的所有类都适用于所有类,因此我们有一个 .NET 标准项目,它被 .NET Core 项目引用。 .NET Core 项目随后被 .NET Framework 项目引用。我们现在应该如何命名我们的项目。
一种解决方案是在命名空间中包含 Standard 或 Core 的名称:
[CompanyName].Standard.[TechnologyName].[Feature]
[CompanyName].Core.[TechnologyName].[Feature]
[CompanyName].[TechnologyName].[Feature]
或
[CompanyName].[TechnologyName].[Feature].Standard
[CompanyName].[TechnologyName].[Feature].Core
[CompanyName].[TechnologyName].[Feature]
但我们想知道是否有一个全局命名约定。
【问题讨论】:
-
我不太相信您需要技术名称作为项目命名的一部分。为什么底层框架的类型与您的项目命名相关?从你的角度来看,根据它为你做什么来命名你的东西。可能是在 .NET Core 上运行的项目对您来说是跨平台的,在这种情况下,名称可能类似于
[CompanyName].[Product].[Windows].[Feature]、[CompanyName].[Product].[Cross-Platform].[Feature]等。 -
@nawfal:一个原因可能是为了区分针对不同底层框架的项目的多个变体。
-
@O.R.Mapper 我认为这将是一种极其罕见的情况,请考虑会导致多少代码重复。在任何情况下,当命名
[CompanyName].[Product].[Framework].[Feature]或[CompanyName].[Product].[Feature].[Framework]之类的东西时,它是有意义的,因为从您的产品的角度来看是这样。只需遵守其中一项约定即可。无论如何,OP的情况不同。 -
@nawfal:实际上,我认为这是一个非常常见的场景。不同的目标需要不同的依赖版本,因此每个目标框架一个项目文件通常是要走的路。没有代码重复,因为所有项目都包含相同的文件。
-
@O.R.Mapper 是有道理的。不过几乎没有遇到过情况。我认为随着时间的推移,这样的框架限制越来越多。反正我明白你的意思。
标签: .net .net-core naming .net-standard