如何避免在C#中命名空间和类的相同名称?

如何避免在C#中命名空间和类的相同名称?

问题描述:

我知道推荐在类和名称空间中使用不同的名称,但有时很难实现它。 说起来容易做起来难。由于某种原因,我们需要使用相同的名称时,他们从未给我们提供过解决方案。如何避免在C#中命名空间和类的相同名称?

例如,我需要在其中找到所有关于配置类命名空间,所以命名空间被命名为ABC.Configuration。我不认为这个名字有什么问题。

而在命名空间下,我需要一个类来存储配置,所以它的名字也将是配置。合理的,你不觉得吗?

除此之外,我还有其他一些类,如ConfigurationBuilder,ConfigurationManager等,在命名空间下。

更重要的是在Java中,包名,我们使用的“驼峰”和类名,我们使用“PascalCase”。因此,由于命名的情况,没有问题。

那么如何命名在这种情况下的类在C#中?


非常感谢你。如果我使用Configuration.Configuration,我只需要编写更多的命名空间,而另一些只是没有命名空间的ConfigurationManager。这有点乱。

使用ConfigurationStore的想法很好,谢谢。 我认为名称类的解决方案是在名称中清楚地标识用法并添加另一个单词。 但是在我的项目中,我需要在某处使用Configuration,如果我编写ConfigurationStore.Path来读取配置,它看起来很奇怪。 也许我可以使用像IConfiguration这样的接口来避免命名问题

+0

你可以有一个'Configuration.Configuration'类型。没有什么能阻止你这样做。 – poke

+0

C#允许以全部小写('configuration.configuration')命名,但'PascalCase'更适用于名称空间,类和方法命名约定。 –

+0

我试图使用小写字母。但它是一团糟,因为所有其他库都是PascalCase。 – HalfLegend

您可以命名您的命名空间ConfigurationManagement。或者如果它存储配置,则将其命名为ConfigurationStore

camelCase vs PascalCase:告诉你像命名空间一样命名你的命名空间的工具是不好的,它会告诉你,名称不同的实体在大小写方面也是不一样的。

所以找到更好的名字。

在C#中,PascalCase用于两种场景。对于命名空间和类,如果我没有错。

对名称空间和类使用相同的名称是完全可以的。如果您有using指令,您可以参考ConfigurationConfiguration.ConfigurationConfiguration。没有混淆。

如果它只是你的个人喜好,你不喜欢有一类具有相同的名称命名空间,这里有配置的一些其他的名字:

  • Config
  • Configurations
  • Configs
  • ConfigurationManager(类唯一的名字)

此外,IDE可能会通过具有不同的图标来告诉您标识符指的是什么。例如,在Xamarin演播室:

enter image description here

命名空间都标有{ s,而类标有C秒。

+0

你的编译器会在一些特殊的场景中窒息它。只是说。这是完全合法的......直到你达到这一点。那在某些身体部位是痛苦的。第一次做的更容易,尤其是如果你发布NuGet包供其他人使用,因为*他们*将会有问题,并且无法轻易改变它。 – nvoigt

+0

这就是为什么我指出他会在编译器抱怨的时候告诉你一个标识符指的是什么,以便OP能够弄清楚发生了什么。 @nvoigt – Sweeper

+0

我不想使用不同的别名或缩写。为一个项目中的一个意义。如果我决定在一个地方使用Config,那么任何地方都会配置 – HalfLegend

为什么ABC.Configuration当你只有ABC?我的意思是,没有提到长名字会有点混乱。 ABC.Configuration.Configuration来访问Configuration类,而不是ABC.Configuration。我宁愿应用后者。

+0

如果我只有一个班级,我会这样做。其他课程呢?将ConfigurationManager,ConfigurationBuilder全部放入ABC中?这将是一团糟,你不觉得吗? – HalfLegend

+0

@HalfLegend但是会有多少种配置类型?三?只有三种类型的命名空间似乎有点太多,更不用说这样的命名空间可能会永远不会在以后扩展。 – poke

+0

不完全。例如,查看System.Configuration。它有各种配置类或方法。最重要的是,取决于你的名称。我对你的建议是尽量减少它们。 – taiko