完全合格的班级名称有什么意义?

Col*_*ard 3 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.fields
com.companyname.productclass.enterprise.productname.sdkname.namespace.objects.fields.data
com.companyname.productclass.enterprise.productname.sdkname.namespace.security
Run Code Online (Sandbox Code Playgroud)

... 等等.

是否有一点我错过了?或者仅仅是编码风格的问题?


SDK在几个方面比看起来更加冗长,导致数千行.cs文件,所以我愿意接受写它的人有不同于我习惯的编码风格(或按字节付费:D)

Dav*_*vid 7

关键是要避免命名冲突.例如,如果我创建了一个带有"objects"命名空间的类库,如

com.davidstratton.productclass.enerprise.productname.sdkname.objects
Run Code Online (Sandbox Code Playgroud)

它可以与其他类并存.

这似乎有点矫枉过正,但请记住在前.Net时代困扰发展的"dll hell"的日子.公司可以(并且确实)具有相同名称的产品类,因此安装一个应用程序可能会破坏另一个应用程序..Net的设计目标之一就是避免这种情况.

您要询问的命名约定实际上是在类设计指南中指定的,如下所述:http://msdn.microsoft.com/en-us/library/ms229048.aspx.

编辑 - 添加

我的上述陈述不正确,说这是在"官方指南"中.我不确定在哪里看到"com.companyname.blah.foo.bar"命名建议,但它不在我能找到的当前定义或旧定义中.我一定想象在某处读它.

所以我正式同意所有人说这太过分了.


Wim*_*dse 5

过分冗长.如果这个SDK是Java代码库的端口或主要由Java开发人员编写,那么我不会感到惊讶.

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

请参阅:命名空间命名准则