给函数和类的命名分类非常重要,常常遇到知道这个函数存在,但是记不住具体的名字的情况。因为你即使知道它的意思,命名也很科学,但是往往同一个功能有多个描述方式,比如目录可以是Folder和Directory,一个创建文件夹的函数是CreateFolder还是CreateDirectory呢?实际上不同的库,这两个名称可能都使用,你可能知道调用哪个库,比如是WindowsAPI还是自己编写的还是引用的第三方的,但是具体名字记不住了。
这个时候如果把具有相同功能的一类函数加一个命名前缀,比如某个库都以某个前缀命名函数和类,那么使用起来确实方便多了,这个前缀冲突的可能性不是太大,比函数名冲突要少的多。
当然了,一般提倡的做法是使用命名空间。但是发现命名空间并不是非常的方便,如果你调用了很多的库,你就会被不同的命名空间搞的很烦,特别是多级命名空间,和命名空间很多的情况。命名前缀一般就是2到3个字符,甚至一个也不是不可以,但是命名空间一般不会太短,否则很难记住含义。命名前缀在后面单词的提示下,首字母只起分类作用,不至于对名称产生很大影响。
如果不使用using namespace,你就需要书写太多的冒号和命名空间名称来引用一个对象,如果使用using namespace,在局部就失去了命名空间的意义,你不知道你引用的函数是哪个命名空间的,除非不断的看开头的引用。而且拷贝代码的时候,你需要不断的关注到底引用了哪些命名空间。
Java显然深受命名空间所累,它在IDE(Eclipse)里甚至添加了自动引用命名空间和纠错的功能。
综合来看,我觉得,命名空间应该在大类比如一整个库只有一个命名空间,内部的小分类,用命名前缀更方便。 |