浅谈几种常见语言的命名空间(Namespace)

命名空间提供了一种从逻辑上组织类的方式,防止命名冲突。

几种常见语言

C++

命名空间是可以嵌套的

嵌套的命名空间是指定义在其他命名空间中的命名空间。嵌套的命名空间是一个嵌套的作用域,内层命名空间声明的名字将隐藏外层命名空间声明的同名成员:

int x = 20;
namespace outer {
 int x = 10;
 namespace inner {
  int z = x;
 }
} 

int main()
{
 std::cout << outer::inner::z; // 输出10
 return 0;
}

C#

嵌套的命名空间

命名空间声明中声明命名空间,各命名空间用”.”分隔。

例如:

namespace N1.N2
{
class A {}
class B {}
}

在语义上等效于

namespace N1
{
namespace N2
{
class A {}
class B {}
}
}

Java

package cn.org.web3d.x3dpad

Java中的命名空间意味着你只要拥有一个独立的顶级域名,就可以保证自己项目的绝对唯一性。

Objective-C

在Objective-C应用中的所有类名都必须是全局唯一的。命名一直是Objective-C的硬伤,和那些优雅的语言相比。苹果官方建议两个字母作为前缀的类名是为官方的库和框架准备的,而对于作为第三方开发者,官方建议使用3个或者更多的字母作为前缀去命名我们的类。

PHP

namespace Vendor\Package\.....

它强调第一级Vendor就应该是唯一性标识,意味着你要拥有一个{Vendor}.com 的顶级域名,才可以保证自己项目的绝对唯一性。比如,当我想到这一点时,我立马去注册了一个meanir.com的域名来防身。

(0)

相关推荐

  • PHP命名空间(namespace)的动态访问及使用技巧

    PHP的命名空间(namespace)是PHP 5.3中加入最重要的一个新特性,这个概念在C#中已经很早就有了,php中的namespace其实和c#的概念是一样的. 一.动态访问命名空间的元素 namespace me\poet; function test() { echo '1111'; } $fun = 'test';//不能这么用,最后$fun()无法动态调用到test():Fatal error: Call to undefined function test() $fun = '\

  • namespace.js Javascript的命名空间库

    github:https://github.com/hirokidaichi/namespace-js 定义Namespace对象: var Namespace 现在来具体看一下Namespace对象的定义,它是一个NamespaceDefinition对象.该对象是一个函数对象(NamespaceDefinition对象的构造函数,如果不给参数的话就默认生成一个main的命名空间),还有三个属性,Object,Definition,Proc.其值依次为NamespaceObjectFactor

  • thinkphp autoload 命名空间自定义 namespace

    使用thinkPHP过程中,一些自定义的类库和第三方类库需要找一个合适的位置放置,放到系统默认的org文件夹感觉不太好,破坏了thinkPHP的原生目录. 就看了一下官方手册,可以在模块或者应用的配置文件里自定义类库的命名空间. 不过使用中需要注意的是,你的自定义的命名空间名称需要和你的文件夹名称相对应,不能更改. 然后测试一下 以上所述就是本文的全部内容了,希望大家能够喜欢.

  • PHP命名空间(Namespace)简明教程

    这一特性在 PHP5.0x 时候就提出过,后来被取消并安排在 PHP6 中实现.而此次又再次"提前"到了 PHP5.3 发布,可见开发人员对其的重视以及谨慎的态度. 官方发布时说明文档的内容可能已过期(documentation maybe out dated),所以在这里简单的说明命名空间的用法:首先是声明一个命名空间,加入了新的关键字 namespace ,其应在类文件的开头 复制代码 代码如下: <?php   namespace Project::Module;    c

  • JavaScript创建命名空间(namespace)的最简实现

    最近看Ext源代码,看到了其实现命名空间函数的实现方法: Ext NameSpace实现代码:        复制代码 代码如下: namespace : function(){              var a=arguments, o=null, i, j, d, rt;              for (i=0; i<a.length; ++i) {                  d=a[i].split(".");                  rt = d

  • PHP命名空间(Namespace)的使用详解

    对于命名空间,官方文档已经说得很详细[查看],我在这里做了一下实践和总结. 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只要避免命名重复就可以解决,最常见的一种做法是约定一个前缀. 例:项目中有两个模块:article和message board,它们各自有一个处理用户留言的类Comment.之后我可能想要增加对所有用户留言的一些信息统计功能,比如说我想得到所有留言的数量.这时候调用它们Comment提供的方法是很好的

  • ASP.Net中命名空间Namespace浅析和使用例子

    关于Namespace(命名空间)的使用,我常用 复制代码 代码如下: < % @ Import Namespace="System.Data" %> ,这是在引用为我们提供的Namespace,这和ASP不同的,我们在ASP.net必须先引用与我们操作有关的Namespace后才能使用相应的功能.其实说白了,一个Namespace; 就是一个组件. 这个是关于ASP.net的高级应用. 我下面简单的列举一些常用的Namespace 复制代码 代码如下: < % @

  • PHP命名空间(namespace)的使用基础及示例

    PHP的命名空间(namespace)是PHP 5.3中加入最重要的一个新特性,这个概念在C#中已经很早就有了,php中的namespace其实和c#的概念是一样的. 一. PHP的命名空间主要解决三种冲突的问题:常量,函数,类 通俗理解:namespace就相当于是用来建一个目录,将namespace下面的代码放在该目录里面,与外面的区分开来. /* |--------------------------------- |namespace示例 |@黑眼诗人 <www.chenwei.ws>

  • 浅谈几种常见语言的命名空间(Namespace)

    命名空间提供了一种从逻辑上组织类的方式,防止命名冲突. 几种常见语言 C++ 命名空间是可以嵌套的 嵌套的命名空间是指定义在其他命名空间中的命名空间.嵌套的命名空间是一个嵌套的作用域,内层命名空间声明的名字将隐藏外层命名空间声明的同名成员: int x = 20; namespace outer { int x = 10; namespace inner { int z = x; } } int main() { std::cout << outer::inner::z; // 输出10 re

  • 浅谈七种常见的Hadoop和Spark项目案例

    有一句古老的格言是这样说的,如果你向某人提供你的全部支持和金融支持去做一些不同的和创新的事情,他们最终却会做别人正在做的事情.如比较火爆的Hadoop.Spark和Storm,每个人都认为他们正在做一些与这些新的大数据技术相关的事情,但它不需要很长的时间遇到相同的模式.具体的实施可能有所不同,但根据我的经验,它们是最常见的七种项目. 项目一:数据整合 称之为"企业级数据中心"或"数据湖",这个想法是你有不同的数据源,你想对它们进行数据分析.这类项目包括从所有来源获得

  • 浅谈python和C语言混编的几种方式(推荐)

    Python这些年风头一直很盛,占据了很多领域的位置,Web.大数据.人工智能.运维均有它的身影,甚至图形界面做的也很顺,乃至full-stack这个词语刚出来的时候,似乎就是为了描述它. Python虽有GIL的问题导致多线程无法充分利用多核,但后来的multiprocess可以从多进程的角度来利用多核,甚至affinity可以绑定具体的CPU核,这个问题也算得到解决.虽基本为全栈语言,但有的时候为了效率,可能还是会去考虑和C语言混编.混编是计算机里一个不可回避的话题,涉及的东西很多,技术.架

  • 浅谈三种数据库的 SQL 注入

    目录 SQL 注入原理 SQL 注入分类 1. 数字型注入 2. 字符型注入 3. 其他类型 常见数据库的注入 SQL Server MySQL Oracle SQL 注入原理 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统. SQL 注入分类 1. 数字型注入 当输入的参数为整型时,则有可能存在数字型注入漏洞. 假设存在一条

  • 浅谈几种常用的JS类定义方法

    // 方法1 对象直接量 var obj1 = { v1 : "", get_v1 : function() { return this.v1; }, set_v1 : function(v) { this.v1 = v; } }; // 方法2 定义函数对象 var Obj = function() { var v1 = ""; this.get_v1 = function() { return this.v1; }; this.set_v1 = function

  • 浅谈三种配置linux环境变量的方法(以java为例)

    1. 修改/etc/profile文件 如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题. ·用文本编辑器打开/etc/profile ·在profile文件末尾加入: export JAVA_HOME=/usr/share/jdk1.6.0_14 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/li

  • 浅谈一种Laravel路由文件划分方式

    最初,我想到了利用路由组方法可以接收文件,这就是 laravel 在 RouteServiceProvider 处拆分路由的方式. <?php namespace App\Providers; use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; use Illuminate\Support\Facades\Route; class RouteServiceProvider ext

  • 浅谈关于JavaScript的语言特性分析

    前言在JavaScript中,作用域.上下文.闭包.函数等算是精华中的精华了.对于初级JSer来说,是进阶必备.对于前端攻城师来说,只有静下心来,理解了这些精华,才能写出优雅的代码. 本文旨在总结容易忘记的重要知识,不会讲基本的概念.如果对基本知识不太熟悉,就去翻下< JavaScript权威指南>吧~ 语言特性函数表达式 先看代码段: 复制代码 代码如下: [javascript] view plaincopyprint?var f = function foo(){      return

  • 浅谈一种让小程序支持JSX语法的新思路

    React社区一直在探寻使用React语法开发小程序的方式,其中比较著名的项目有Taro,nanachi.而使用React语法开发小程序的难点主要就是在JSX语法上,JSX本质上是JS,相比于小程序静态模版来说太灵活.本文所说的新思路就是在处理JSX语法上的新思路,这是一种更加动态的处理思路,相比于现有方案,基本上不会限制任何JSX的写法,让你以真正的React方式处理小程序,希望这个新思路可以给任何有志于用React开发小程序的人带来启发. 现有思路的局限 在介绍新的思路之前,我们先来看下Ta

  • 浅谈Spark RDD API中的Map和Reduce

    RDD是什么? RDD是Spark中的抽象数据结构类型,任何数据在Spark中都被表示为RDD.从编程的角度来看,RDD可以简单看成是一个数组.和普通数组的区别是,RDD中的数据是分区存储的,这样不同分区的数据就可以分布在不同的机器上,同时可以被并行处理.因此,Spark应用程序所做的无非是把需要处理的数据转换为RDD,然后对RDD进行一系列的变换和操作从而得到结果.本文为第一部分,将介绍Spark RDD中与Map和Reduce相关的API中. 如何创建RDD? RDD可以从普通数组创建出来,

随机推荐