`
yidongkaifa
  • 浏览: 4051814 次
文章分类
社区版块
存档分类
最新评论

C/C++中变量及函数命名的讨论

 
阅读更多

一、命名法
在编程时为提高程序的可读性及易维护性,降低程序的维护、升级成本,在程序代码的书写时除了要注意格式外还要注意变量的命名,现在流行的有两种命名法,一种是流行于Window编程(主要是由于微软的影响)的匈牙利命名法。
据说这种命名法是一位叫 Charles Simonyi 的匈牙利程序员发明的,后来他在微软呆了几年,于是这种命名法就通过微软的各种产品和文档资料向世界传播开了。现在,大部分程序员不管自己使用 什么软件进行开发,或多或少都使用了这种命名法。这种命名法的出发点是把量名变按:属性+类型+对象 描述的顺序组合起来,以使程序员作变量时对变量的类型和其它属性有直观的了解,下面是HN变量命名规范,其中也有一些是我个人的偏向:
属性部分
全局变量 g_
常量 c_
c++类成员变量 m_
静态变量 s_
类型部分
指针 p
函数 fn
无效 v
句柄 h
长整型 l
布尔 b
浮点型(有时也指文件) f
双字 dw
字符串 sz
短整型 n
双精度浮点 d
计数 c(通常用cnt)
字符 ch(通常用c)
整型 i(通常用n)
字节 by
字 w
实型r
无符号 u
描述部分
最大 Max
最小 Min
初始化Init
临时变量 T(或Temp, Tmp)
源对象 Src
目的对象Dest (或Dst
这里顺便写几个例子:
hwnd : h 是类型描述,表示句柄, wnd 是变量对象描述,表示窗口,所以 hwnd 表示窗口句柄;
pfnEatApple : pfn 是类型描述,表示指向函数的指针, EatApple 是变量对象描述,所以它表示
指向 EatApple 函数的函数指针变量。
g_cch : g_ 是属性描述,表示全局变量,c 和 ch 分别是计数类型和字符类型,一起表示变量类
型,这里忽略了对象描述,所以它表示一个对字符进行计数的全局变量。
上面就是HN命名法的一般规则。
另外一种命名法流行于Linux/Unix系统的编程者中间,不是用大小写区分各个词,而是通过下划线"_"来分割,如print_char(),send_a_byte。这种方法有好处就是不用区分大小写,因为全部用小写,但是由于每一个词之间都有一个下划线,就增长了变量、函数名的长度。

这两种命名法可以根据个人爱好选择。
二、作用域与变量命名
在使用变量时为了方便可以给变量名加上前缀,如上述匈牙利命名法中的i,c,l等用于区分变量是int,char,long型,但如果一个函数中用到了全局变量还用到了局部变量,当然可以通过加前缀来实现,如g_表示全局,l_表示局部变量 m_表示类成员,但也可以采用不同的命名法来实现。如全局变量用匈牙利命名法,局部变量则采用加下划线的方式,这样一看到变量也能马上区分出是全局变量还是局部变量。

三、命名的几点建议
变量或函数名采用有意义的英文单词、词组或者缩写表示,并且整个函数名的首字母大写,而变量名首字母小写。如PutChar(), iTimeCounter, tmpCounter, SaveSettings(), ChkBuff()等。
全局变量加前缀指示数据类型,并加前缀g,整个函数内均有效的局部变量加l,且带数据类型,如果一个局部变量仅用于很小的范围内,如仅用于一个for循环中,可以不加任何前缀,并且用简短的变量名,如:
glSysClk, gipCounter(int型指针做全局变量)
...
{ int i;
for(i=0; i ...
}
}
...
for(int i=0; i ...
}
变量及函数分组命名,加前缀。全局函数加组名,静函数可以不加组名。如一组堆栈管理函数StkPush(),StkPop(), StkClr(), StkGetLength()

分享到:
评论

相关推荐

    C++编程变量命名规范

    C++变量命名规范,有关项目的全局变量用g_开始,类成员变量用m_,局部变量若函数较大则可考虑用l_用以显示说明其是局部变量

    高质量C/C++——变量函数命名规则

    命名规则对软件产品而言并不是“成败悠关”的事,我们不要化太多精力试图发明世界上最好的命名规则,而应当制定一种令大多数项目成员满意的命名规则,并在项目中贯彻实施。

    C++编码规范

    C/C++语言编码规范 1 目录 2 1. 命名规则 4 1.1. 起个合适的名字 4 1.1.1. 类的名称(适用于C++) 4 1.1.2. 方法和函数的名称(适用于C/C++) 4 ...1.10. 全局变量的命名前缀(适用于C/C++) 7

    C/C++程序员面试指南.杨国祥(带详细书签).pdf

    面试题7:函数、变量等命名都有哪些规则 面试题8:写出bool、int、float、指针变量与“零值”比较的if语句 3.3 数据类型 面试题9:写出代码的输出结果 面试题10:C语言中不合法的整型常数 面试题11:short i = 0; i ...

    eclipse 开发c/c++

    提纲:Outline 窗口模块提供了有关出现在源代码中的过程、变量、声明以及函数的快速视图。 利用 outline,您可以方便地找到源代码中的适当引用,或者甚至搜索所有项目源代码。 代码辅助:这个代码完成功能类似于可在...

    gsoap 2.8 (SOAP/XML 关于C/C++ 语言的自动化实现工具内附 CSharp webservice例子,及GSOAP client和server例子)

     以直接用C/C++开始编写web服务及客户端程序而不需要了解SOAP协议的细节,但是由于我们在本节中使用了大量的实例来说明gSOAP与其他SOAP  实现的连接及通讯,所以了解一些SOAP及WSDL协议也是必需的。  5.1 如何...

    深入解析C++中的临时变量

    从操作系统底层 深入解析C++中的临时变量

    C 语言变量,函数重定义问题

    介绍C/c++ 开发过程中的命名规则,是重要的入门知识。

    批量替换代码里函数和变量名的小工具(已生成,直接可用,要有c\c++开发环境)

    批量替换代码里函数和变量名的小工具(VC编写),可一次性替换多个文件里的多个函数和变量名称。使用方式如下: 1.用文本文档写一个替换的映射表文件,里面包含多组替换词组(一行一对替换词组),如: oldfuncname ...

    高质量C/C++编程指南(PDF)

    目 录 前 言6 第1 章 文件结构 1.1 版权和版本的声明. 1.2 头文件的结构. 1.3 定义文件的结构. 1.4 头文件的作用. 1.5 目录结构. 第2 章 程序的版式 2.1 空行. ...附录C :C++/C 试题的答案与评分标准.

    C++中静态成员函数与静态成员变量(static )

    C++中静态成员函数与静态成员变量(static ) 这篇介绍了静态成员函数与静态成员变量,是我的读书笔记,我希望它够简短但又比较全面,起到复习的作用。如果有一些C++知识记不清楚了,它可以帮你很快回忆起来。 复习...

    C/C++编码规范

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

    C/C++编程规范总结

    |适用范围| 2 一.变量命名 2 二.常量命名和宏定义 5 三.函数命名 5 四.结构体命名 6 五.结构化编码约定 6

    c++11动态导入库函数变量命名规则.pdf

    动态导入库LIB文件是对相应的DLL动态链接库中的函数、变量的导入库,方便静态加载动态库。动态导入库实际上是DLL中导出函数或变量名称的定义。生成动态导入库LIB文件时,可以用DEF文件指定定义的格式。这些定义采用...

    高质量C++编程指南.PDF

    高质量C/C++编程指南.PDF 作者:林锐 目录: 前 言 第1章 文件结构 1.1 版权和版本的声明 1.2 头文件的结构 1.3 定义文件的结构 1.4 头文件的作用 1.5 目录结构 第2章 程序的版式 2.1 空行 2.2 代码行 2.3 代码行内...

    高质量C/C++编程指南.pdf

    《高质量C/C++编程指南》,作者:林锐,pdf 格式,大小 327KB。 目录: 前 言 ..................................................................................................................................

    C/C++迭代器使用具体解释

    迭代器是一种检查容器内元素并遍历元素的数据类型。能够替代下标?问vector对象的元素。  每种容器类型都定义了自己...  每种容器都定义了一对命名为 begin 和 end 的函数,用于返回迭代器。假设容器中有元素的话。由

    C++编程思想 pdf

    157<br/>9.1.1 函数内部的静态变量 157<br/>9.1.2 控制连接 160<br/>9.1.3 其他的存储类型指定符 161<br/>9.2 名字空间 161<br/>9.2.1 产生一个名字空间 162<br/>9.2.2 使用名字空间 163<br/>9.3 C++中的静态成员 ...

    C++ 如何快速获取一个函数是哪个命名空间里面的?

    C++ 如何快速获取一个变量是哪个命名空间里面的? 过程是一样的。 /// @file main.cc /// @author zhaolu /// @version 1.0 /// @data 2020-03-14 #include #include #include namespace zhaolu { template class ...

    详解C++编程中类的成员变量和成员函数的相关知识

    C++类的成员变量和成员函数 类是一种数据类型,它类似于普通的数据类型,但是又有别于普通的数据类型。类这种数据类型是一个包含成员变量和成员函数的一个集合。 类的成员变量和普通变量一样,也有数据类型和名称,...

Global site tag (gtag.js) - Google Analytics