`
lovnet
  • 浏览: 6694625 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

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

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

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

匈牙利命名法

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

例如int m_iNumber;

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

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

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

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

类型名 缩写
char c
short s
int i
long l

unsigned

char

uc

unsigned

short

us
unsigned int ui
unsigned long ul
float f
double d
long double ld
bool b
void v
pointer p
enum n
struct x
union w
array a
windows类型
string sz
DWORD dw
HANDLE h
TCHAR tc
WCHAR wc
smart pointer sp
LPSTR pc
LPTSTR ptc
LPWSTR pwc

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

优点与缺点:

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

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

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

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

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

驼峰命名法

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

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

小驼峰命名法

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

例如 int myPhoneNumber;

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

所以单词首字母大写

例如 void GetPhoneNumber();

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

匈牙利法是

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

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

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

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

下划线命名法

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

比如int MY_NUMBER;

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

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

分享到:
评论

相关推荐

    c++编码规范(华为).rar

    对于从事c++开发的人员来说,规范自己的编码风格,更有利于工作。

    C++编码规范

    C/C++语言编码规范 1 目录 2 1. 命名规则 4 1.1. 起个合适的名字 4 1.1.1. 类的名称(适用于C++) 4 1.1.2. 方法和函数的名称(适用于C/C++) 4 1.1.3. 含有度量单位的名称(适用于C/C++) 4 1.1.4. 缩写名称...

    C++ .NET 编码命名规范

    C++ .NET 编码命名规范 C++ .NET 编码命名规范

    华为C++编码规范

    华为代码规范,适用 C/C++ 1 概述 ................................................................................................................................................................... 5 ...

    C++编码书写规范

    C++编码书写规范,用于规范书写代码,包括文件结构,程序版式,命名规则,表达式和基本语句等。提高代码可读性,这是大学c++课程资源,适用于初学者以及自学者。

    C++知识学习汇总,方便实用

    1:C++primer学习笔记 2:C++笔试题目大汇总 3:C++编码规范 4:c++沉思录 5:C++代码调试 6:C++命名规范 7:C++学习 8:C++语言常识

    谷歌发布的C++编码规范

    谷歌发布的C++编码规范,为了方便离线察看我打成了chm格式的,李开复推荐,我看了,也推荐,大公司就是不同,跟许多开源的项目编码风格一致,很值得学习,总之以后就不用为编程风格跟命名纠结了

    C_C++语言编码规范.doc

    C++语言编码规范,包括命名规则,排版规则,文档与注悉

    c++(Qt)编码规范.

    c++(Qt)编码规范,比较有用

    C++编码规范之命名约定

    公司内部有一份代码规范,感觉还是很有帮助的,简单列一下C++规范中的核心部分,必要的加一些自己的理解和实际编码过程中遇到的问题与感受,很多细节的说明不一一翻译了,能够明白行。  第一部分:命名约定  ...

    C++编码风格,命名规范

    详细讲述C++编码风格, 命名规范的好文章,带有大量实例代码,不要错过。

    高质量C++编码规范

    高质量C++编码规范。主要介绍了命名规范、空间地址分配等。

    C++编码规范(分享)

    本章主要介绍C++编码规范,主要从4个方面来探讨:程序文件结构、命名规则与可读性、单元代码的规范性以及程序的效率。全章内容部分参考了国内几大软件公司的编码规范。亲测挺有用,大神级别作者写得很精辟

    天融信DLP部门 C/C++编码规范.docx

    本人所写的C/C++部门编码规范,排版清晰,语言简练,涵盖:命名规范、注释、bug规避等方面,拿来即用。

    Google_C++编码规范_中文版

    Google下的C++编码规范中文版,详尽的对 c++编程进行规范,包括变量命名、函数命名、类命名等,从代码易读性、可扩展性等方面进行描述。

    C++编码规范与指导

    C++编码规范,用于软件企业内部非常适用,采用该规范写出的代码易读易懂,从命名上就能看出很多东西,不用再用繁索的注释来进行注释了~

    C/C++编码规范

    CC++编码规范 常量命名 变量命名 函数命名 类命名 注释规范

    Google C++ 编码规范

    如果每个项目将代码置于不同命名空间中,project1::Foo和project2::Foo作为不同符号自然不会冲突。 缺点:命名空间具有迷惑性,因为它们和类一样提供了额外的(可嵌套的)命名轴线。在头文件中使用不具名的空间容易...

    C++编码规范(Ver1.1)

    2、文件命名规范 4 3、变量命名规范 4 4、实例命名规范 5 5、函数数命名规范 6 6、类命名规范 7 7、其他命名规范 7 7.1、常量 7 7.2、联合体 7 7.3、结构体 7 7.4、宏 7 7.5、枚举 8 二、注释规范 8 1、一般规范 8 2...

    Google_Cpp_Style_guide_CN(C++编码规范).pdf

    google C++ 编码规范,中文翻译版,对头文件、作用域、类、命名、注释等做了统一的规范约束。

Global site tag (gtag.js) - Google Analytics