C++编码规范(2):命名规范

C++编码规范(1):代码注释

C++编码规范(2):命名规范

    

 如果你代码中的变量名,函数数,类名都取得很好,不仅是个有意义的词或短语,而且确切的表达了该变量或函数的功能.那读起代码来就像看文章一样,绝对是一种享受.当然理想是美好的,现实可是残酷的.很少有人能做到这样.一来嘛你英语词汇量得多,不样不容易找到那么多合适并贴切的词.二来就是有些词组合就会很长,这样不得不用些缩写,而缩写就不是每个人都认识,对一些人来说和无意义的字母没啥区别,只要你英语好才能一眼瞧出来.

    当然当你使用一个编程语言的话,里面已经弄出很多词来做关键字了,当你看熟了看多了后就会看着很舒服很顺眼.但如果你学个啥框架,比如MFC,突然发现那么多宏名,还有一些类型名(其实也是宏转换整出来的). 就会觉得非常不顺眼,非常丑陋.这些类型名大部分是一些缩写,虽然是代表着确切的意思,但由于缩写的太厉害了,你跟瞧着一堆没意义的字母没啥区别.当然你要用多了看着也就顺眼了.

 

关于命名有两个比较出名的专业名词:Hungarian(匈牙利) , Camel(骆驼) , Pascal(帕斯卡)

 

匈牙利命名法

变量名=属性+类型+对象描述.

例如int m_iNumber;

如果是局部变量一般就不需要属性了,所以就是int iNumber;

1.其中对象描述的名称都要求有明确含义,可以取对象名字全称或名字的一部分.可以起自解释的作用,从名字中就可以看出变量的功能.

2.其中属性(有个下划线)包括: g_表示全局变量,  c_表示常量 , m_表示C++类成员变量, s_ 表示静态变量 , sm_表示静态成员变量

3.类型部分都是用类型关键字的缩写表示:

类型名缩写
charc
shorts
inti
longl

unsigned

char

uc

unsigned

short

us
unsigned intui
unsigned longul
floatf
doubled
long doubleld
boolb
voidv
pointerp
enumn
structx
unionw
arraya
windows类型 
stringsz
DWORDdw
HANDLEh
TCHARtc
WCHARwc
smart pointersp
LPSTRpc
LPTSTRptc
LPWSTRpwc
  

据说这种命名法是一们叫Charles Simonyi的匈牙利程序员发明的,他也在微软工作过.所以你查看MFC中的一些源码会发现都用的匈牙利命名法,你要是开发中用到MFC可能也倾向于使用这种命名规范.

优点与缺点:

匈牙利命名的优点显而易见,能从名字本身获取到很多信息,知道变量的类型或要实现的功能.

缺点是添加这些前缀会使变量名变长,变量名一长就会显得不雅,另外就是开发人员要多敲几个字母.当然还有其他很多缺点.

 

另外就是匈牙利命名主要针对基本类型变量名,但在面向对象语言中肯定到处是类名和函数名,那类名和函数名该怎么取呢? 此时在它们前面加个啥前缀没有太多意义的.

此时变量名=属性+类型+对象描述 ,中最有对象描述这一项可派得上用场了,但是对象描述可没给我们带来啥明确的格式指导,比如描述信息一长,就很不利于我们眼睛的识别.

于是就需要一些规范应用于对象描述的格式,另外一些命名规范就出现了.

 

驼峰命名法

骆驼有一个很明显的特征就是背像个山峰一样,有凹下去与凸起来的部分.

于是这种命名法就借鉴了这个特征,让变量名通过某些字母大写来达到凹凸的效果,这有利于眼睛识别,因为如果都是小写或大写都不利于眼睛识别.

小驼峰命名法

除第一个单词首字母小写,其他单词首字母大写.

例如 int myPhoneNumber;

 

大驼峰命名法(又叫Pascal法)

所以单词首字母大写

例如 void GetPhoneNumber();

 

实际上驼峰命名法与匈牙利命名法并不冲突,有时还可以综合使用.

匈牙利法是

变量名=属性+类型+对象描述

我们可以让前两者不变,只在对象描述中应用驼峰法.当然了也可以中单独使用驼峰法,不需要属性和类型信息.

在C#中基本上习惯上只使用驼峰法,不再需要属性或类型的信息.因为VS这开发环境的智能感觉支持的非常好,你把鼠标放哪个变量上会马上显示出类型等相关信息.而且由于C#中在隐式类型转换时要求较严,必须是精度不会降低,不会出现溢出.所以类型信息对我们用处也不是太大了.最重要的是对象描述的功能性信息了.

一般函数名和类名都用大驼峰命名法,不过在MFC中类名一般推荐是匈牙利与驼峰结合的变体,类前面加一个大写的字母C,后面部分就是大驼峰法了

 

下划线命名法

就是单词之间用下划线连接

比如int MY_NUMBER;

一般用的不多,不过像PL/SQL里面就用的特别多,因为PL/SQL不像C++和C#变量是区分大小写的.所以下划线可能更好点.

 

在C++中一般宏都全部大写,然后单词间用下划线分开.

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值