C++变量命名规范

在软件开发过程中,代码的命名规范是一项很突出的内容。一套定义完整、结构清晰明了的命名规范将大大提升源代码的可读性和软件的可维护性。

  据考证,没有一种命名规则可以让所有的程序员都满意,程序设计教科书一般也不会指定命名规则。但是制定一套令开发组成员基本满意的命名规则,并在项目中贯彻实施,也是团队开发一项必不可少的工作。

  我将我的团队的实际工作中的命名规则整理如下:

  第一部分:共性规则

  共有八项。作为指导供成员采纳。

  【规则1】标识符应简单明了,望文知意。

  标识符采用英文单词。切忌使用汉语拼音来命名。程序中的英文单词一般不要太复杂,用词应当准确。例如不要把C++(C++培训 )urrentValue写成NowValue。

  尽量不要使用单词缩写或首字母缩写。只有当标识符过长时才考虑使用单词缩写。在使用缩写时,不要自创缩写,尽量使用被广泛接受的缩写。

  【规则2】标识符长度应当符合“min-length && max-information”原则。

  一般的讲,长名字能更好地表达含义,所以函数名、变量名、类名长达十几个字符不足为怪。但是名字也不是越长越好。例如:变量名maxval就比maxValueUntilOverflow更好用。单字符的名字也是有用的,常见的如i,j,k,m,n,x,y,z等,它们通常用作函数内的局部变量

  【规则3】命名规则尽量与所采用的操作系统或开发工具的风格保持一致。

  例如Windows应用程序的标识符通常采用“大小写”混排的方式,如AddChild。而Unix应用程序的标识符通常采用“小写加下划线”的方式,如add_child。别把这两类风格混在一起用。

  【规则4】程序中不要出现仅靠大小写区分的标识符。

  例如:int x和int X;void foo() 和void FOO() 等。

  【规则5】避免在不同级别的作用域中重名。

  程序中不要出现标识符完全相同的局部变量和全局变量,尽管两者因作用域的不同而不会发生语法错误,但会使人产生误解。

  【规则6】正确命名具有互斥意义的标识符。

  使用正确的反义词组命名具有互斥意义的变量或相反动作的函数。

  如:"MinValue"和"MaxValue","GetName()" 和 "SetName()"

  【规则7】尽量避免名字中出现数字编号。

  如Value1,Value2等,除非逻辑上的确需要编号。这是为了防止程序产生无意义的名字,降低程序的可读性。

  【规则8】使用库标志

  在开发动态库时,为了防止软件库中的一些标识符和其它软件库中标识符冲突,可以为各种标识符加上能反映软件性质的前缀。

  例如三维图形标准OpenGL的所有库函数均以gl开头,所有常量(或宏定义)均以GL开头。

  第二部分:细则

  我采用了一部分的“匈牙利”法命名规范,但没有照搬。“匈牙利”法最大的特征就是类型前缀。例如:

  int nNum = 0; // n 为类型信息,表明 nNum 是一个 int 类型

  class CUser; // C 为类型信息,表明 CUser 是一个类

  但是正因为如此,“匈牙利”法命名规范也给人一种繁琐的感觉。例如:

  int i, j, k;

  float x, y, z;

  倘若采用“匈牙利”命名规则,则应当写成:

  int iI, iJ, ik; // 前缀 i表示int类型

  float fX, fY, fZ; // 前缀 f表示float类型

  对于此类情况,我的处理方式是不加类型前缀。而对于下列情况我会加:

  int iHeigh;

  Bool bFlag;

  总之,在我的命名规范中,类型前缀是一个可选的命名规则。下面分类进行详细的规范。

  一、 类和接口

  1、 命名:类名都以大写字母“C”开头,后跟一个或多个单词。每个单词的首字母要大写。接口以大写"I"开头,代表Interface。

  2、 组成形式:推荐用"名词"或"形容词+名词"的形式,例如:"CAnalyzer", "CFastVector" ....

  二、 函数

  1、 命名:函数的名称由一个或多个单词组成。每个单词的首字母要大写。最长不得超过20个字符。

  2、 组成形式:全局函数应当使用"动词"或者"动词+名词"(动宾词组)的形式。例如:"gGetName()", " gDrawBox()"。

  类成员函数应当只使用“动词”,被省略掉的名词就是对象本身。例如:

  " box->Draw();"。

  3、 全局函数:以小写前缀"g"开头。

  4、 保护成员函数:开头应当加上一个下划线“_”以示区别,例如:"_SetState()"

  5、 私有成员函数:开头应当加上两个下划线“__”,例如:"__DestroyImp()"

  6、 虚函数:习惯以“Do”开头,如:"DoRefresh()", "_DoEncryption()"

  7、 回调和事件处理函数 :习惯以单词“On”开头。例如:"_OnTimer()", "OnExit()"

  三、 变量

  变量是程序中使用最多的标识符,变量的命名规范是一套C++命名规范中最重要的部分:

  1、 命名:变量名由作用域前缀+类型前缀+一个或多个单词组成。变量用小写字母开头的单词组合而成,第二个单词的首字母要大写。例如:int nDrawMode。变量最长不得超过20个字符。

  特殊的:对于某些用途简单明了的局部变量,也可以使用简化的方式,如:i, j, k, x, y, z

  2、 组成形式:变量的名字应当使用"名词"或者"形容词+名词"。例如:"nCode", "m_nState","nMaxWidth"," oldValue "," newValue "。

  3、 作用域前缀:作用域前缀标明一个变量的可见范围。作用域可以有如下几种:

  前缀 说明 例子

  无 局部变量

  m_ 类的成员变量(member) Int m_width

  ms_ 类的静态成员变量(static member) static int ms_initValue;

  s_ 静态变量(static) static int s_initValue;

  g_ 外部全局变量(global) int g_howManyPeople;

  sg_ 静态全局变量(static global)

  gg_

  进程间共享的共享数据段全局变量(global global)

  说明:作用域前缀不同于下面的类型前缀,应该坚决执行。原因是:

  1)变量作用域和链接性改变的情况是很少的,例如,很少的情况下会把一个成员变量改成静态变量

  2)编程中使用的工具常常不会直观的显示变量的作用域和链接性

  4、 类型前缀:作用域前缀标明一个变量的可见范围。类型前缀标明一个变量的类型,有如下几种:

  前缀 说明 例子

  b 布尔型变量(bool, BOOL) bEnable

  ch 字符型变量(char TCHAR) chName

  lpsz LPSTR、LPCSTR、LPCTSTR lpszName

  n 整型和位域变量(int, UINT,__int32,__int64) nLength

  l long lOffset

  by BYTE

  w WORD wPos

  dw DWORD dwRange

  f 浮点型变量(float)

  d double

  p 指针型变量和迭代子(pointer) pDoc

  lp 远指针

  e 枚举型变量(enumeration)

  pfn

  特别针对指向函数的指针变量和函数对象指针(pointer of function)

  g 数组(grid)

  h handle Windows对象句柄 hWnd

  四、 常量

  常量名由类型前缀+全大写字母组成,单词间通过下划线来界定,如:cDELIMITER, nMAX_BUFFER。类型前缀的定义与变量命名规则中的相同。

  五、 结构体、宏、枚举变量、联合体

  全部由前缀+大写字母组成,单词间使用下划线界定。

  1、 结构体:加小写前缀"tag",之后以大写字母开头。

  例:

  typedef struct tagPOINT

  { int x;

  int y;

  } POINT;

  2、 宏:大写字母组成,单词间使用下划线界定

  例:#define MAXNUMBER 100

  3、 枚举变量:加小写前缀"enum"。

  例:

  typedef enum _FILE_OPEN_MODE

  { OPEN_READONLY,

  OPEN_READWRITE

  }FILE_OPEN_MODE;

  4、 联合体:加小写前缀"uni"。

  例:

  typedef union _VARIANT

  { char unichVal;

  int uninVal;

  float uniftVal;

  } VARIANT;

时间: 2024-10-01 20:21:15

C++变量命名规范的相关文章

说说变量命名规范的重要性

在编程过程中一定要注意代码命名的规范性,否则在使用和维护过程中将造成很大的麻烦,这也是一种良好的编码习惯. 看下面代码,除了userPass命名规范[小驼峰命名法],其他的都不规范. uId:看get方法,就会发现是getuId(),因为java生成get方法时,先看变量的前两个字母,如果第二个字母不是大写,则第一个大写. UserMoney:看set方法,UserMoney=userMoney,没有了this. username:往往第二个单词首字母需要大写.

【转】python变量命名规范

python源码和其他一些书籍,命名各种个性,没有一个比较统一的命名规范.于是总结了一些,供参考. 模块名: 模块应该使用尽可能短的.全小写命名,可以在模块命名时使用下划线以增强可读性.同样包的命名也应该是这样的,虽然其并不鼓励下划线. 主要是考虑模块名是与文件夹相对应的,因此需要考虑文件系统的一些命名规则的,比如Unix系统对大小写敏感,而过长的文件名会影响其在Windows\Mac\Dos等系统中的正常使用. 通常是小写字母,单词之间用_分割 ad_stats.py 包名: 和模块名一样 类

变量命名规范

原文链接:http://www.cnblogs.com/zhangpengshou/archive/2008/10/19/1314424.html a Array 数组 b BOOL (int) 布尔(整数) by Unsigned Char (Byte) 无符号字符(字节) c Char 字符(字节) cb Count of bytes 字节数 cr Color reference value 颜色(参考)值 cx Count of x (Short) x的集合(短整数) dw DWORD (

python 变量命名规范

python源码和其他一些书籍,命名各种个性,没有一个比较统一的命名规范.于是自己总结了一些,可供参考.模块名:小写字母,单词之间用_分割ad_stats.py 包名:和模块名一样 类名:单词首字母大写AdStatsConfigUtil 全局变量名(类变量,在java中相当于static变量):大写字母,单词之间用_分割NUMBERCOLOR_WRITE 普通变量:小写字母,单词之间用_分割this_is_a_var 实例变量:以_开头,其他和普通变量一样_price    _instance_

【Java】变量命名规范

Java是一种区分字母的大小写的语言,所以我们在定义变量名的时候应该注意区分大小写的使用和一些规范,接下来我们简单的来讲讲Java语言中包.类.变量等的命名规范. (一)Package(包)的命名 Package的名字应该都是由一个小写单词组成,例如com.xuetang9.company等. (二)Class(类)的命名 Class的名字首字母大写,通常由多个单词合成一个类名,要求每个单词的首字母也要大写,例如:XueTang或ProNine. (三)变量的命名 变量的名字可大小写混用,但首字

0090 JS变量的使用:声明、赋值、初始化、语法扩展、命名规范

变量的声明 变量的赋值 7.1 声明变量 // 声明变量 var age; // 声明一个 名称为age 的变量 var 是一个 JS关键字,用来声明变量( variable 变量的意思 ).使用该关键字声明变量后,计算机会自动为变量分配内存空间,不需要程序员管. age 是程序员定义的变量名,我们要通过变量名来访问内存中分配的空间. 7.2 赋值 age = 10; // 给 age 这个变量赋值为 10 =: 用来把右边的值赋给左边的变量空间中,此处代表赋值的意思 变量值是程序员保存到变量空

C++变量命名规则

转自:http://www.cnblogs.com/finallyliuyu/archive/2010/09/25/1834301.html 浅谈C++变量命名规则 不知道别的公司如何,反正我现在的公司对变量命名并没有一定的规范,唯一要求就是能简单易懂,但是,我想,这个多个程序员,大概每个人都有自己习惯的一套 命名规则吧,不过,要是并不通用的话,大概看别人的程序会很头疼吧,SO 为了别人看偶的程序不至于太头疼,偶决定找个通俗的命名法来参考下,于是,搜到了匈牙利命名法... 匈牙利命名法的来历和介

计算机语言变量命名规则

计算机变量一般命名规则为: 变量名首字母必须为字母(a-z A-Z),下划线(_),或者美元符号($)开始,php编程中所有变量必须以$开始.(有些编译器已经支持中文变量名了) 变量名只能是字母(a-z A-Z),数字(0-9),下划线(_)的组合,并且之间不能包含空格,数字不能放在变量名首位. 变量名不能使用编程语言的保留字.比如在javascript中不能使用true,false,while,case,break保留字等等. 在每个代码范围内使用足够短和足够长的名称:例如循环计算器用一个字符

Visual C#中的winform/webform/asp.net控件命名规范

                                                                        1.控件命名规范 类型 前缀 示例 AdRotator adrt adrtTopAd Button btn btnSubmit Calendar cal calMettingDates CheckBox chk chkBlue CheckBoxList chkl chklFavColors CompareValidator valc valcValidA