C# 完全限定类名有什么意义?

C# 完全限定类名有什么意义?,c#,naming-conventions,C#,Naming Conventions,我在C#中有一个第三方SDK,它的类名如下: com.companyname.productclass.enterprise.productname.sdkname.namespace com.companyname.productclass.enterprise.productname.sdkname.namespace.objects com.companyname.productclass.enterprise.productname.sdkname.namespace.objects.f

我在C#中有一个第三方SDK,它的类名如下:

com.companyname.productclass.enterprise.productname.sdkname.namespace
com.companyname.productclass.enterprise.productname.sdkname.namespace.objects
com.companyname.productclass.enterprise.productname.sdkname.namespace.objects.fields
com.companyname.productclass.enterprise.productname.sdkname.namespace.objects.fields.data
com.companyname.productclass.enterprise.productname.sdkname.namespace.security
。。。等等

这有没有什么我不知道的地方?还是仅仅是编码风格的问题



SDK在很多方面都比必要的要详细得多,导致了数千行.cs文件,因此我愿意接受编写它的人有不同于我习惯的编码风格(或按字节付费:D)

关键是避免命名冲突。例如,如果我创建了一个具有“objects”命名空间的类库,如

com.davidstratton.productclass.enerprise.productname.sdkname.objects
它可以与其他类共存

这似乎有些过分,但请记住,在.Net之前,困扰开发的“dll地狱”时代。许多公司可以(也确实)使用相同名称的产品类,因此安装一个应用程序可能会破坏另一个应用程序。Net的设计目标之一就是避免这种情况

您所询问的命名约定实际上是在类设计指南中指定的,如下所述:

编辑-添加

我上面的说法是不正确的,我说这是在“官方指导方针”中。我不确定我在哪里看到了“com.companyname.blah.foo.bar”命名建议,但我找不到它的当前定义或旧定义。我一定想象过在什么地方读到它

所以我正式同意所有人的说法
过度杀伤力。

这看起来有些过头,但您应该始终包含一个名称空间,这样就不会与其他名称空间发生冲突(例如,基于公司的域)-这对于SDK尤其重要,因为我想它的目的是在各种上下文中使用


如果你不这样做,那么你最终可能会后悔,并有一个重构工作来修复它。在文件顶部使用语句其实不是什么大负担。

过于冗长。如果这个SDK是Java代码库的一个端口,或者主要由Java开发人员编写,我也不会感到惊讶

名称空间约定绝对不符合一般最佳实践和Microsoft建议


请参阅:

您应该阅读关于聪明的程序员创建了一个名为“int”的全局变量的帖子(也在stackoverflow上)。这将很快回答这个问题

这是为了防止类命名冲突,当您在项目中使用多个库时,会经常发生这种冲突


NET framework本身中的一个很好的例子是:
System.Web.UI.WebControls
命名空间中有一个
Image
类,而
System.Drawing
命名空间中有一个
Image
类。如果没有名称空间,这些类将相互冲突。

我可以看出名称空间冲突可能是一个问题。但是,
productname.objects
就足够了吗?或者最多是
productname.sdkname.objects
?对我来说,命名空间的9个层次似乎超越了偏执!这可能太过分了。在我看来,你的例子的深度是极端的,但它确实遵循了“官方”准则。那么,它们是什么“官方”准则呢?MS没有那么深。这个例子是不必要的。我正在寻找。。。。早在.NET1.0时代,我就看到了说明应该使用“com.companyname…”语法的文档。然而,这可能只是一本书,而不是微软的官方指南。不幸的是,我在.NET1.0的MSDN库中找不到相应的部分。是的,我相信该公司的许多产品都是Java的。谢谢你的链接,这让我确信我在自己的代码中使用了一个合理的约定!你有这篇文章的链接吗?我也在找,但我看不到。可能被删除了?找到了。Crystal Reports是一款糟糕的产品的另一个原因。