java namespace

作者:原创时间:2022-04-06
文档

java namespace是什么,让我们一起了解一下?

namespace是许多编程语言使用的一种代码组织的形式,通过命名空间来分类,区别不同的代码功能,避免不同的代码片段(通常由不同的人协同工作或调用已有的代码片段)同时使用时由于不同代码间变量名相同而造成冲突。

我们如何用好namespace?

1、谷歌的代码风格规范中建议我们不要随便把变量、类型之类的放到全局命名空间中。因为如果是几千个工程师协同完成任务,代码达到上亿行时,要使程序能运行的话,必须解决命名冲突的问题,大家都为了省事而把变量都定义到全局命名空间中则会带来很多麻烦。

2、在.cc文件中使用匿名namespace,以避免链接时命名冲突。但不要在.h文件中使用匿名namespace。

3、不要使用using 指令如using namespace foo;,它容易使命名空间发生命名冲突。不要在.h文件中使用using指令,除非是仅内部使用的namespace,因为using指令会使得.h文件中的任何变量函数都可以被外界访问。

例子如下:

// Shorten access to some commonly used names (in a .h file).
namespace librarian {
    namespace impl {  // Internal, not part of the API.
    namespace sidetable = ::pipeline_diagnostics::sidetable;
    }  // namespace impl
}// namespace librarian

实战操作,具体代码如下:

#ifdef NO_NET_33843894_ALIAS
namespace net_33843894 {
#else
namespace net {
#endif
    class Socket {
        ...
    };
}
#ifndef NO_NET_33843894_ALIAS
    namespace net_33843894 = net;
#endif

以上就是小编今天的分享了,希望可以帮助到大家。

显示全文
java newinstance java nextint java nextline java nexus java nfs java geotools java getbytes java hashcode java hdfs java node类 java notify java nslookup java number java hibernate java htmlunit java image java implements java influxdb java inputstreamreader java onvif java mybatisplus java mvvm java multiset java mqtt java mono java monad java module java modelandview java mockito java mmap java mkdir java mina java mian java method java merge java memcpy java matrix java matlab java math.ceil java mapping