为什么在一个小型项目中输入vehicles::cars::function
很不方便?
记住命名空间应该服务的目的。他们应该避免名称冲突,而不是其他。
如果你发明了这样一个令人费解的命名空间结构,我试图将几个using namespace ...
放在每个文件的顶部,那么它就会破坏命名空间的目的。
它也没有告诉我很多我不知道已经。你打算在你的boats
命名空间中放置什么,我不知道这个名字本身就是一艘船?我是否需要在命名空间中的任何内容上澄清“这属于船只”?很可能不会,然后命名空间没有意义。
一般情况下,不问什么问题有与使用任何语言功能,直到你发现了优点是什么是。每个功能都需要证明自己。那么你提出的命名空间会解决什么问题?
如果它不能解决真正的实际问题,那么这是一个坏主意,不管别的。
我一直认为看看不同语言的标准库是有益的。
.NET使用长名称的深层嵌套命名空间。简单动态数组的全名是System.Collections.Generic.List<T>
。
因此,没有人使用命名空间。每个人只需将using System.Collections.Generic
放置在需要使用List的每个文件的顶部。
正因为如此,遇到困难的那一刻你还会碰到另一个List
class。你会想要做同样的事情,瞧,你有两个类冲突。
C++使用非常平坦的namespcae结构,其中名称空间的名称也很短。
C++中的等效类只是std::vector
。因此,人们通常会输入名称空间前缀,因此,当我将另一个矢量类添加到我的项目中时,它会起作用。没有名称冲突,因为当我想引用标准库向量时,我使用前缀std::
。
要看什么东西,更多的东西 – 2010-11-17 18:15:05
另外请注意,在小程序中观察风格的唯一原因是适应大程序的预期。风格,良好的做法,设计模式等等在小程序中很少涉及,因为它们中的大多数用于易于维护和容易扩展 – 2010-11-17 18:16:52