我已经向自己证明了编译和运行应用程序不需要命名空间.但是,不使用命名空间有哪些危险和陷阱?它创建了我试图避免的层.
我知道你在尖叫,但敏捷和抽象怎么样,所以在代码和对象之间存在20层抽象.我不是在问它是否违反了这个月或那个敏捷的东西.通过不使用命名空间来实现真实世界的问题是什么?
编辑:
创建一个独立的类dll,这样在类项目中就不会发生冲突.当我将其包含在必须使用完全限定名称的其他项目中时,试图避免.myNamespace.myClass MyClass = new myNamespace.myClass();
从评论看来,命名冲突是最大的问题.
猜猜我应该使用一个使用声明并加速...
命名空间有两个主要用途:
首先,它们使代码的使用者能够更容易地理解,查找和正确使用您的代码.系统诊断工具位于System.Diagnostics命名空间中是有原因的.这样客户就可以知道其中的内容.
其次,它们是防止名称冲突的机制.
第一个实际上到目前为止更重要.冲突并不在于普遍.尽管如此,它们是可能的,明智地使用命名空间可以防止它们.
如果您不关心客户查找,理解和使用您的代码,并且您没有命名冲突,那么请确保跳过使用命名空间.
它创建了我试图避免的层.
没有创建真正的额外"图层".命名空间纯粹允许组织类型的方式,并有助于防止命名冲突,因为项目变大并且使用了更多的库.
就运行时而言,没有名称空间 - 所有类型都是完全限定的,而C#中的名称空间只是更改了类型名称.关闭命名空间只会使您的类型名称更容易与其他名称冲突,但如果您在项目中不多次使用相同的名称,则对代码是否有效没有"实际影响",或者使用与引用的程序集中的类型名称相同的名称并通过其导入using.
编辑以回应评论:
"创建图层"的意思是,当我创建对象时,我必须将名称空间添加为图层.(即myNamespace.myClass MyClass = new myNamespace.myClass();)"
请注意,仅当您没有using myNamespace;语句或在项目中使用多个名称空间时才需要这样做.如果您始终在项目的默认命名空间内工作,则无需限定名称.