摘要由于在开发工作中经常用到C++Java和C#作为开发语言命名规范的问题经常给我造成一些困扰一方面命名规范没有唯一的标准答案另一方面虽说语言的命名规范并没有固定的形式三种语言的风格毕竟不太一样也各自有着一些独特的特点本文将对C++Java与C#的命名规范进行总结
在编写代码的过程中所采用的命名方式经常变动没有形成固定的风格因此根据从网上收集到的一些资料以及自身的一些经验对C++Java以及C#的命名规范进行了总结方便以后查询
命名规范的原则◆ 尽量采用以前采用过的命名规则◆尽量在三种语言下采用相同的命名规则以方便记忆◆尽量采用来自官方(如SunMS)的命名规则
匈牙利命名法Camel命名法与Pascal命名法匈牙利命名法在Windows编程中使用非常普遍由微软的一位匈牙利程序员提出匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀标识出变量的作用域类型等例如m_lpszStr表示指向一个以字符结尾的字符串的长指针成员变量在面向对象的程序设计中匈牙利命名法使用起来非常别扭
Camel命名法即骆驼式命名法原因是采用该命名法的名称看起来就像骆驼的驼峰一样高低起伏Camel命名法有两种形式混合使用大小写字母和单词之间加下划线
例如runFast和run_fast都属于Camel命名法
Pascal命名法与Camel命名法类似不过Pascal命名法的首字母为大写字母 命名规范对照表
标识符类型
C++
Java
C#
文件名
与类名相同定义类是文件名一般成对出现如FooBarh和FooBarcpp对应类FooBar
与类名相同
同Java
名字空间包
同C#
包名的前缀是全部小写的ASII字符并且是一个顶级域名通常是comedugovnetorg包名的后续部分根据不同机构各自内部的命名规范不尽相同这类命名规范可能以特定目录名的组成来区分部门项目机器或注册名
示例
l comsuneng
l comapplequicktimev
l educmucsbovikcheese
Pascal命名法且从表示范围大的名字开始
示例
l OracleDataAccess;
l MicrosoftOfficeExcel;
枚举值
Pascal命名法枚举值前面加上枚举类型名中间以下划线_隔开
示例
l enum Color{Color_Red Color_Green};
Pascal命名法
示例
l enum Color{Red Green};
同Java
类结构体类型定义(typedef)枚举类型
同Java
Pascal命名法
示例
l class Raster;
l class ImageSprite;
同Java
接口
与类型命名规范相同
命名规则与类名相似
示例
l interface RasterDelegate;
l interface Storing;
Pascal命名法前面需要加上字符I
示例
l interface ITester;
l interface ILogger;
方法
同C#
Camel命名法
示例
l run();
l runFast();
l getBackGround();
Pascal命名法
示例
l Run();
l RunFast();
l GetBackGround();
方法内的变量及参数
同Java
Camel命名法
示例
l int myWidth;
l int taxTotal;
同Java
私有保护实例字段
同Java
Camel命名法前面需要加一个下划线_
示例
l int _employeeId;
l String _name;
l Customer _customer;
同Java
属性存取函数
Pascal命名法读取函数前面加上Get设置函数前面加上Set
示例
l GetEmployeeId();
l SetName();
l GetCustomer();
Camel命名法读取函数前面加上get设置函数前面加上set
示例
l getEmployeeId();
l setName();
l getCustomer();
与方法命名规则相同应该与字段名称相同建议采用自动属性
示例
常量
同Java
全部大写单词间用下划线隔开
示例
l static final int MIN_WIDTH = ;
l static final int MAX_WIDTH = ;
l static final int GET_THE_CPU = ;
同Java
事件
无
无
Pascal命名法
示例
l FormClosing;
l ValueChanged;
l ButtonClicked;
异常类型
继承自std::exception与类型命名规则相同且以Exception结尾
继承自javalangException与类型命名规则相同且以Exception结尾
继承自SystemException与类型命名规则相同且以Exception结尾