【发布时间】:2011-07-29 00:52:52
【问题描述】:
.NET 让我非常恼火的一件事是命名空间应该是 Pascal 大小写的,这会导致命名空间/类名冲突的可能性。
考虑以下几点:
namespace MyCompany.MyProduct.SalesOrder {
public class SalesOrder {
}
}
这是完全有效的代码,但是 SalesOrder 作为一个类的使用者现在必须使用 MyCompany.MyProduct.SalesOrder.SalesOrder 的完全限定名称,否则编译会导致烦人的 'MyCompany.MyProduct.SalesOrder' is a 'namespace' but is used like a 'type' 错误。
其他人正在做什么来解决这个问题?有些地方我看到其他人只是违反规则并使用小写包,这确实吸引了我,但我确实喜欢符合标准并使用适当的大小写。到目前为止,在我的使用中,我尽可能地接受了基于复数的命名空间名称的概念,但是这有时看起来很丑。
我个人认为 .NET 搞错了,应该像 Java 的包一样使用小写的命名空间。
【问题讨论】:
-
不要将类命名为与命名空间相同。这很少是必需品。
-
Talljoe,我并不是在争论我的类名与命名空间名称相同,问题是有时会发生冲突。例如,如果我有一个具有命名空间
MyProduct.Drawing的绘图产品,因为我希望它对System.Drawing命名空间进行建模,但是我想要在MyProduct.Drawing中创建一个名为Drawing的类。另一个问题是说我有一个使用System.Drawing的产品,并且我有一个名为Design的类,它与System.Drawing.Design名称空间发生冲突。再次强调我认为命名空间应该全部小写。 -
您可以使用命名空间别名 [msdn.microsoft.com/en-us/library/sf0df423.aspx] 通过明确说明您想要的内容来解决此问题:使用 Design = MyProduct.Drawing.Design;
-
好点 Talljoe,我实际上忘记了命名空间别名,仅供参考:msdn.microsoft.com/en-us/library/c3ay4x3d.aspx
-
好吧,对于
Drawing的例子,你不应该有一个名为Drawing的类。Drawing名称表明它包含围绕绘图活动的多项职责。这清楚地表明Drawing类将违反单一职责原则。考虑到这一点,Drawing是命名空间的完美示例,而不是类。
标签: c# .net standards standards-compliance