前言
在初学C++的时候,一定要养成良好的命名习惯才可以让程序的可读性大大提高,这里我整理和收集了一些有用的命名规则,以便自己 后续程序阅读和分享。其中一些摘自网络,将比较常识性的东西去掉了,保留了自认为有价值的一些内容。
变量命名
变量或者函数的命名通常有一些准则可供参考,这里仅仅罗列了比较有用的一些:
准则 | 描述 |
---|---|
最小长度原则 | 语意明确情况下,应当缩短命名长度 |
不重命名 | 在不同作用域中尽量不适用相同的命名 |
避免出现数字符号 | 避免名字中出现数字符号 |
、
变量名称由作用域+类型前缀+一个或者多个单词组成
作用域前缀
作用域前缀的常见写法如下:
前缀 | 说明 |
---|---|
无 | 局部变量 |
m_ | 类的成员 |
sm_ | 静态类的成员 |
s_ | 静态成员 |
g_ | 外部全局变量 |
sg_ | 外部静态全局变量 |
gg_ | 进程间共享的全局变量 |
其中:除非不得已,尽可能少用全局变量
类型前缀
普通类型
普通类型是我们常见的一些数据类型,没有经过自定义
前缀 | 说明 | 关键词 | 示例 |
---|---|---|---|
n | 整形和位域变量 | number | int nCode |
e | 枚举变量 | enum | emum type eColor |
c | char | char cName |
|
sz | C类型字符串 | char * | char * szTemp[10] |
cs | CString字符串 | CString | CString csStr() |
b | 布尔类型变量 | bool | bool bFlag |
f | 浮点数据 | float | float fNumber |
p | 指针变量和迭代器 | pointer | Log* pLog |
pfn | 指向函数的指针变量,函数对象指针 | pointer of function | 待定 |
g | 数组 | grid/Array | int gNumList[] |
i | 类的实例 | instance | Log iLog |
h | 句柄类型 | HANDLE | m_hWnd |
- | - | - | - |
str | 字符串 | std::string | std::string strName |
v | vector | std::vector | std::vector vTestItem |
类型前缀可以使用组合方式,如
vnNumList="vector int NumList"
枚举类型
枚举类型全部使用大写字母,并且最后一个字母为E
//LIMIT_CHECK_TYPE_E 上下限类型,E代表枚举
enum LIMIT_CHECK_TYPE_E
{
LIMIT_NONE,
LIMIT_LOWER_ONLY,
LIMIT_UPPER_ONLY,
LIMIT_BOTH,
};
结构体
结构体中,变量最后一个字母使用_T表示
CAMERA_BLEMISH_CONFIG_T{
}
类命名
属性命名
参考作用域前缀
部分
前缀 | 说明 |
---|---|
无 | 局部变量 |
m_ | 类的成员 |
方法命名
范围不同,方法前增加的下划线长度不同,这里是以前不曾注意到的点
类别 | 描述 |
---|---|
函数命名 | 函数的名称由一个或者多个单词组成,每个单词首字母大写 |
保护成员(Protected) | 保护成员函数应当加上一个“_"以便区别,如_SetValue() |
私有成员 | 私有成员添加两个下划线,如__GetValue() |
虚函数 | 虚函数习惯以“Do”开头,_DoEncryption |
回调和事件处理函数 | 回调和事件处理函数以On开头,如__OnTimer() |
常量命名
常量命名由类型前缀+全部大写组成,单词通过下划线(_)来进行分隔
nMAX_BUFFER
,cMY_NAME
注释
完整注释
/*************************************************
Function: PortUI::OnInitDlg()
Description: 用于初始化界面的List.
Parameter: Dlg的引用 HWND MainWnd。
Time: 20170831
Author: LiangYaoting
*************************************************/
简短注释
//20170831 LYT 初始化界面