命名空间 VS 命名前缀,该如何解决

命名空间 VS 命名前缀
给函数和类的命名分类非常重要,常常遇到知道这个函数存在,但是记不住具体的名字的情况。因为你即使知道它的意思,命名也很科学,但是往往同一个功能有多个描述方式,比如目录可以是Folder和Directory,一个创建文件夹的函数是CreateFolder还是CreateDirectory呢?实际上不同的库,这两个名称可能都使用,你可能知道调用哪个库,比如是WindowsAPI还是自己编写的还是引用的第三方的,但是具体名字记不住了。

这个时候如果把具有相同功能的一类函数加一个命名前缀,比如某个库都以某个前缀命名函数和类,那么使用起来确实方便多了,这个前缀冲突的可能性不是太大,比函数名冲突要少的多。

当然了,一般提倡的做法是使用命名空间。但是发现命名空间并不是非常的方便,如果你调用了很多的库,你就会被不同的命名空间搞的很烦,特别是多级命名空间,和命名空间很多的情况。命名前缀一般就是2到3个字符,甚至一个也不是不可以,但是命名空间一般不会太短,否则很难记住含义。命名前缀在后面单词的提示下,首字母只起分类作用,不至于对名称产生很大影响。

如果不使用using namespace,你就需要书写太多的冒号和命名空间名称来引用一个对象,如果使用using namespace,在局部就失去了命名空间的意义,你不知道你引用的函数是哪个命名空间的,除非不断的看开头的引用。而且拷贝代码的时候,你需要不断的关注到底引用了哪些命名空间。

Java显然深受命名空间所累,它在IDE(Eclipse)里甚至添加了自动引用命名空间和纠错的功能。

综合来看,我觉得,命名空间应该在大类比如一整个库只有一个命名空间,内部的小分类,用命名前缀更方便。

------解决方案--------------------
楼主分析的及时。
------解决方案--------------------

------解决方案--------------------
比较长的和多级嵌套的命名空间名称可以使用命名空间别名解决,不存在会让人很烦这个问题。
------解决方案--------------------
只是为了分类 ,当然是名字空间好.
任何东西用滥了也会不好.适度使用.

命名前缀来分类是不可取的.将本来应该由C++来做的事交给了程序员,这无疑是增加了程序员的负担.

而且,还是避免不了名字污染,太过暴露的问题.

用名字空间使语意更加清晰,加多两个冒号对未来的维护来说是十分超值的.

------解决方案--------------------
二者都有用处
------解决方案--------------------
探讨
当然了,滥用不对,这句话可以应用在任何场合吧。

我也是在清除了库里很多的命名空间后深有体会,才来发帖的,因为我常常记得一个函数,但是不记得是哪个命名空间里的,所以命名空间多了不好。

但是少了,怎么挑出特定小类别的函数呢?就是使用前缀,前缀记不住,问题也不大,因为都在一个命名空间下,和通常函数用法一样。不用额外理会是不是没有引用那个命名空间。如果知道前缀,只要打出前缀(少打冒号和长的命名……

------解决方案--------------------
宇宙.银河系.太阳系.地球.互联网.csdn.论坛.2012年.5月.pgmsoul(游侠)."命名空间 VS 命名前缀".帖子(0).Value="给函数……更方便。";
(^_^)