C++命名约定

转载 2007年09月22日 23:08:00
  
命名约定
本书采用的命名约定和Microsoft所使用的“匈牙利式”命名约定差不多。该约定是由生于匈牙利布达佩斯的Charles Simonyi开发的,它通过在数据和函数名中加入额外的信息以增进程序员对程序的理解。例如:
char ch;            /* 所有的字符变量均以ch开始    */
byte b;             /* 所有的字节均冠以b    */
long l;             /* 所有的长字均冠以l    */
对于指向某个数据类型的指针,可以先象上面那样建立一个有类型的名字,然后给该名字加上前缀字母P:
char* pch;          /* 指向ch的指针以p开始 */
byte* pb;           /* 同理 */
long* pl;
void* pv;           /* 特意显用的空指针 */
char** ppch;        /* 指向字符指针的指针 */
byte** ppb;         /* 指向字节指针的指针 */
匈牙利式名字通常不那么好念,但在代码中读到它们时,确实可以从中得到许多的信息。例如,当你眼看到某个函数里有一个名为pch的变量时,不用查看声明就立即知道它是一个指向字符的指针。
为了使匈牙利式名字的描述性更强.或者要区分两个变量名,可以在相应类型派生出的基本名字之后加上一个以大写字母开头的“标签”。例如,strcpy函数有两个字符指针参数:一个是源指针,另一个是目的指针。使用匈牙利式命名约定,其相应的原型是:
char* strcpy(char* pchTo, char* pchFrom);       /* 原型 */
在上面的例子中,两个字符指针有一个共同的特点 ── 都指向以0为结尾的C的字符串。因此在本书中,每当用字符指针指向字符串时,我们就用一个更有意义的名子str来表示。因此,上述strcpy的原型则为:
char* strcpy(char* strTo, char* strFrom)            /* 原型 */
本书用到另一个类型是ANSI标准中的类型size_t。下面给出该类型的一些典型用法:
size_t sizeNew, sizeOld;                            /* 原型 */
void* malloc(size_t size);                          /* 原型 */
void* realloc(void* pv, size_t sizeNew);            /* 原型 */
函数和数组的命名遵循同样的约定,名字由相应的返回类型名开始,后跟一个描述的标签。例如:
ch = chLastKeyPressed;                  /* 由变量得一字符 */
ch = chInputBuffer[];                   /* 由数组得一字符 */
ch = chReadKeyboard;                    /* 由函数得一字符 */
如果利用匈牙利式命名方法,mall~和reali~可以写成如下形式:
void* pvNewBlock(size_t size);                      /* 原型 */
void* pvResizeBlock(void* pv, size_t sizeNew);      /* 原型 */
由于匈牙利式命名方法旨在增进程序员对程序的理解,所以大多数匈牙利式名字的长度都要超过ANSI严格规定6个字母的限制。这就不妙,除非所用的系统是几十年前设计的系统,否则这6个字母的限制只当是历史的遗迹。
以上内容基本上没有涉及到匈牙利式命名约定的细节,所介绍的都是读者理解本书中所用变量和函数名称意义的必需内容。如果读者对匈牙利式命名约定的详细内容感兴趣,可以参考本书末尾参考文献部分列出的Simonyi的博士论文。

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

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

Google C++ 命名约定

6. 命名约定 最重要的一致性规则是命名管理. 命名风格快速获知名字代表是什么东东: 类型? 变量? 函数? 常量? 宏 ... ? 甚至不需要去查找类型声明. 我们大脑中的模式匹配引擎可以非常可靠...
  • hit0803107
  • hit0803107
  • 2017年01月13日 17:25
  • 131

软件设计命名规范

1、命名约定 Pascal和Camel命名约定 编程的命名方式主要有Pascal和Camel两种(Pascal:每个单词的首字母大写,例如ProductType;Camel:首个单词的首字母小写...
  • u012848631
  • u012848631
  • 2015年06月08日 17:30
  • 698

网页设计命名规范

网页设计命名规范
  • Chengxuyuan_J
  • Chengxuyuan_J
  • 2017年06月06日 23:14
  • 590

Google Java编程风格指南(献给那些没有良好编码习惯的程序员们)

作者:Hawstein 出处:http://hawstein.com/posts/google-java-style.html 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名...
  • Leyvi_Hsing
  • Leyvi_Hsing
  • 2016年12月25日 19:09
  • 384

VC C/C++ 函数调用约定(最全)

转: VC C/C++ 函数调用约定(最全)  函数调用约定    常见的函数调用约定[5]:cdecl,stdcall,fastcall,thiscall,naked call   M...
  • liuhhaiffeng
  • liuhhaiffeng
  • 2016年12月24日 13:33
  • 663

对约定优于配置的一点思考

开始思考这个问题,源于近期项目庞大,使用ant脚本已经越来越感到乏力,所以开始尝试使用Maven构建项目,惊讶于只需要简单的几行xml就可以完成原来ant需要大量xml才能完成的工作。不得不说,人们在...
  • shan9liang
  • shan9liang
  • 2013年12月07日 15:27
  • 6055

c++中的几种函数调用约定

C++中的函数调用约定主要针对三个问题: 1、参数传递的方式(是否采用寄存器传递参数、采用哪个寄存器传递参数、参数压桟的顺序等); 2、函数调用结束后的栈指针由谁恢复(被调用的函数恢复还是调用者恢...
  • sghdls
  • sghdls
  • 2017年06月24日 18:59
  • 221

C++函数调用约定

函数调用方式FAR PASCAL,__cdecl,_stdcall,__pascal. 解释一: 1、通过栈传递,被调用的函数在返回前清理传送参数的内存栈,但不同的是函数名的修饰部分(关于函数名的...
  • hacker00011000
  • hacker00011000
  • 2016年02月26日 16:58
  • 377

Google C++编程命名约定

1. 总体规则:不要随意缩写;2. 宏、枚举等使用全部大写+下划线;3. 变量(含类、结构体成员变量)、文件、命名空间、存取函数等使用全部小写+下划线,类成员变量以下划线结尾,全局变量以g_开头;4....
  • yliszt
  • yliszt
  • 2013年08月13日 06:31
  • 160
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++命名约定
举报原因:
原因补充:

(最多只允许输入30个字)