本节内容主要参考自代码大全(第二版)
Total, Sum, Average, Max, Min, Record, String, Pointer
Num
比较特殊,加在前面表示总数,加在后面表示下标。不过为了避免混淆,总数最好用Total/Count
来表示,下标用Index来表示first/last
举一些例子:
变量用途 | 变量名称 | 备注 |
---|---|---|
支票累计额 | checkTotal | |
列车速度 | velocity | |
每页行数 | linesPerPage | |
员工序号 | customerIndex | 优于customerNum |
员工总数 | customerTotal | 优于numCustomers(复数) |
i, j, k
做下标,且仅用于此处recordCount
row, column
flag
,应当明确指出具体状态,如用dataReady
表示数据已经准备好了characterType & PRINTABLE_CHAR
temp
,要清楚该变量所代表数据的实际用途done
,某事已完成error
,错误有发生found
,某值已找到success/ok
,某项操作成功,最好能更具体的表示是什么操作true
和false
的含义,如sex
就比male
差很多notFound
就比found
差很多1. enum Color
2. {
3. Color_Red,
4. Color_Green,
5. Color_Blue
6. }
const
定义常量,而不是#define
实体 | 描述 |
---|---|
localVariable | 局部变量,首字母小写,其余单词首字母大写 |
g_globalVariable | 全局变量,使用g_ 前缀 |
funtion_name | 函数/方法,全部小写,单词之间用下划线隔开 |
TypeName | 类型定义,Camel写法,包括枚举和typedef ,枚举总是复数形式 |
Base_Enum | 枚举类型元素,加上单数枚举类型前缀,Color_Red |
ClassName | 类名,Camel写法,每个单词首字母大写,其余字母小写 |
m_classVariable | 类成员变量,使用前缀m_ |
CONSTANT | 常量,全部大写 + 下划线 |
MACRO | 常量,全部大写 + 下划线 |
degree
缩写为deg
,delete
为del
xPox
,yPos
中的Pos表示都是PositionfileNum
和fileIndex
MBPos
表示面板位置,用T6
表示机械臂第6个关节的坐标矩阵,看起来非常的吃力,包括他自己都经常忘记这些变量的具体含义============================================
1.变量名只能是字母(A-Z,a-z)、数字(0-9)或下划线。
2.第一个字母不能是数字,例如2Lerver这不是一个合法的C++变量。
3.不能是c++关键字,例如不能用class这个单词来命名一个变量。
4.区分大小写,例如iA和ia是两个不同的变量。
理论上,在遵守了上面几条规则的前提下,所声明的变量名称都是合法的。比如下面的命名:
char xueshengming[20]; //学生名
char a; //命名一个字符,但变量名毫无意义
这样的变量命名尽管是合法的,但可读性非常差。正规的软件公司,对于变量命名往往都有自己的一个推荐规范。不同公司的规范又会有一些差别。当一个程序员从一个公司跳槽到另一个公司,甚至会出现不习惯新公司代码规范的现象。
万事万物,要是有一个统一的规范,也许程序员这个行业会少一些烦恼。俗话说得好:没有规矩,不成方圆。以下是笔者多年编码得出的变量命名的心得体会,在此总结如下,并奢望有招一日能成为行业规范。
变量命名的宗旨:
一、用最短的字符表示最多的意义。
int iPosX; //Pos表示位置,X表示横坐标 //个人比较喜欢用n做前缀
二、使用变量前缀
在变量前带上小写前缀可以很直观的看出变量的数据类型,而不必到变量的定义处去查看。常用的数据类型推荐变量前缀:
1.整型的前缀
short sValue; //s为short的前缀 int iAge; //i为int的前缀
unsigned int uiAge; //ui为unsigned int的前缀(两个单词的首字母) //也有用u做前缀的
long lValue; //l为long的前缀 2.浮点型的前缀
float fScore; //f为float的前缀
1.变量名只能是字母(A-Z,a-z)、数字(0-9)或下划线。
2.第一个字母不能是数字,例如2Lerver这不是一个合法的C++变量。
3.不能是c++关键字,例如不能用class这个单词来命名一个变量。
4.区分大小写,例如iA和ia是两个不同的变量。
理论上,在遵守了上面几条规则的前提下,所声明的变量名称都是合法的。比如下面的命名:
char xueshengming[20]; //学生名
char a; //命名一个字符,但变量名毫无意义
这样的变量命名尽管是合法的,但可读性非常差。正规的软件公司,对于变量命名往往都有自己的一个推荐规范。不同公司的规范又会有一些差别。当一个程序员从一个公司跳槽到另一个公司,甚至会出现不习惯新公司代码规范的现象。
万事万物,要是有一个统一的规范,也许程序员这个行业会少一些烦恼。俗话说得好:没有规矩,不成方圆。以下是笔者多年编码得出的变量命名的心得体会,在此总结如下,并奢望有招一日能成为行业规范。
变量命名的宗旨:
一、用最短的字符表示最多的意义。
int iPosX; //Pos表示位置,X表示横坐标 //个人比较喜欢用n做前缀 二、使用变量前缀
在变量前带上小写前缀可以很直观的看出变量的数据类型,而不必到变量的定义处去查看。常用的数据类型推荐变量前缀:
1.整型的前缀
short sValue; //s为short的前缀 int iAge; //i为int的前缀
unsigned int uiAge; //ui为unsigned int的前缀(两个单词的首字母) //也有用u做前缀的
long lValue; //l为long的前缀
2.浮点型的前缀
float fScore; //f为float的前缀
double dValue; //d为double的前缀
3.字符型的前缀
char cChar; //c为char的前缀 //个人喜欢用a做前缀
TCHAR tcChar //多字节字符和Unicode字符兼容类型的前缀tc wchar_t wcChar //宽字符前缀wc
4.字符串的前缀
char szName[30]; //sz为C语言字符串的前缀 string strName; //str为C++字符串变量的前缀 CString strInfo; //str为MFC字符串变量的前缀
5.布尔型的前缀
bool bPass; //b为bool的前缀
6.指针型的前缀
int *pValue; //p为指针的前缀
说明:由于指针是指向一定数据类型的变量,因此p后面要不要再加一个前缀一直让我举棋不定。如果再加上前缀比如: int * piKey;
char * pszInfo;
这样似乎意义更完整,但势必会增加变量的字符长度。因此,这里就不硬性规定了。但是,指针变量以p开头应该是雷也打不动的。
7.数组的前缀 int arrNum[10]; //arr为数组的前缀
说明:和指针变量一样,arr后是否再加数组元素的数据类型前缀取决于你自己。 string arrstrName[3]; //C++字符串数组,加上去似乎很别扭
8.枚举变量的前缀
enum emWeek; //em为枚举变量的前缀
9.结构变量的前缀:t
T_NODE tNode; //结构名称以T_开头 10.字节变量的前缀:by BYTE byInfo;
10.字节变量的前缀:by BYTE byInfo;
11.字变量的前缀
DWORD dwInfo; //双字 WORD wInfo; //单字
12.字符指针的前缀
LPCTSTR ptszInfo; //ptsz表示前缀,t表示TCHAR类型 LPCSTR pszInfo; LPSTR pszInfo;
13.STL容器类型前缀 vector vecValue;
说明:vec表示vector容器的前缀,为了简化变量,变量体后面不再使用前缀 list lstInfo;
14.MFC绑定控件变量的前缀
CEdit m_ctlName; //对象变量,变量体前统一用ctl表示 //个人喜欢用m_ctrl
int m_iAge; //值变量,变量体有表示值数据类型的前缀
说明:由于长短指针在32位操作系统后已无区别,所以不再区分,一律以p开头,这也与指针变量以p开头的原则贴得更近。
15.矩形结构的前缀:rc RECT rcClient; CRect rcWin;
16.句柄对象一律以h开头 HWND hWndName; HBRUSH hBr; HPEN hPen; HBITMAP hBmpBack;
17.windows颜色类型的前缀:cr COLORREF crFront;
18.windows中DC(设备上下文)类型的前缀 CClientDC dcClient;
三、类的成员变量以m_开头,后面为变量体,变量体依然要有前缀。
int m_iDepth;
四、定义一个变量,为了简化,在不影响变量意义的情况下,可以仅仅使用前缀。 RECT rc;
五、全局变量一律以g_开头,后面为变量体,变量体依然要有前缀。 int g_iNums;
六、定义结构体为了保证和C语言和C++的写法兼容性,一律采用typedef语句。 typedef struct tagINFO_NODE {
int iData;
tagINFO_NODE *pNext; }T_INFO_NODE, *PT_INFO_NODE;
七、变量体如果是多个单词,每个单词的首字母大写。 int iStudentAge;
八、在意义明确的情况下可以仅仅使用首字母命名变量可以缩短变量名。 int iID;
说明:仅使用首字母表示变量体的前提是保证变量的意义,比如变量iStudentAge如果声明成:
int iSA; //这样将失去意义,不可取
九、定义一个类使用C作为类名的前缀。 class CStudent { … };
引用:https://blog.csdn.net/u012314708/article/details/52130961
==========================================
除第一个单词之外,其他单词首字母大写(常用于变量)
`int myStudentNumber`
每一个单词的首字母都采用大写字母(常用语类名,函数名,属性,命名空间)
`class StudentFamily`
变量名=属性+类型+对象描述,这样做的好处是使程序员第一眼看到变量时就对变量的类型和其它属性有直观的了解。
`全局变量 g_
常量 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)
源对象 Src
目的对象 Dest`
所有字母均小写,每个单词间以下划线分割
`int student_number`
`m_iMyData 是一个匈牙利命名法,m_表示它是成员变量,小写的i说明了它是个整型,后面的和帕斯卡命名相同,指示了该变量的用途
myData 是一个骆驼命名法,它第一个单词的第一个字母小写,后面的单词首字母大写,看起来像一个骆驼
MyData 就是一个帕斯卡命名的示例
my_data 是一个下划线命名的示例`
【完】