起个名字好难:关于变量命名的思考与总结
2015-10-09 20:44
274 查看
最近半年多,随着编写代码工程变大,代码行数也在增加。类名、函数形参、成员变量名、全局变量等等开始变得混淆不清,自己也有时搞不清变量的意义、作用域等等。故,在网上翻阅了大牛们关于变量命名的一些文章,思考并总结了,写下了这篇关于代码中变量命名的文章。希望与所有与我有共同困惑的人共勉。
一、语法过关
在所有关于语言类入门书籍中,一般最开始就会提到关于命名的语法规则,C++的语法规则大致如下:
1、 变量名只能是字母(A-Z,a-z)和数字(0-9)或者下划线(_)组成。
2、 第一个字母必须是字母或者下划线开头。
3、 不能使用C++关键字来命名变量,以免冲突。
4、 变量名区分大小写。
二、名字体现含义
这个不用多说,道理也很简单。如果变量名没有体现含义的话,后期会对变量意义产生混淆,比如所int i,大家根本不知道这个i到底是干什么用的。
三、变量名体现类型
对于很多新手(包括以前的我),在举个很简单的例子,命名一个int型变量wage,表示员工的工资。当代码量很少时,你看下定义,就知道这个变量表示的是整型数据,而代码行数很多的时候,代码中又充斥着各种类型的变量时,很容易产生混淆。一些常用的类型的前缀如下:
1、 整型前缀
int iId; //int前缀:i
short sId; //short前缀:s
unsigned int uId //
unsigned int 前缀:u
long lId; //long前缀:l
2、 浮点型前缀
float fValue; //float前缀:f
double dValue; //double前缀:d
3、 字符型前缀
char cChar; //char前缀:c
4、 字符串前缀
char szPath; //char字符串前缀:sz
string sPath; //string字符串前缀:s
5、 布尔型前缀
bool bIsOK; //bool类型前缀:b
6、 指针型前缀
char * pPath; //指针前缀:p
7、 数组前缀
int arrnNum; //数组前缀:arr
8、 结构体前缀
STUDENT tXiaoZhang; //结构体前缀:t
9、 枚举前缀
enum eWeek; //枚举前缀:e
10、 字节的前缀
BYTE byIP; //字节前缀:by
11、 字的前缀
DWORD dwMsgID; //双字前缀:dw
WORD wMsgID; //单字前缀:w
12、 STL容器前缀
vector vecValue; //vector容器前缀:vec
四、全局变量命名
全局变量一律以g_开头,后面为变量,变量同时还要加前缀。
五、成员变量命名
成员变量统一加_前缀。例如整型成员变量,定义为_iAge。
其它类型的规则还有很多,这里没有一一列举了。上述也有部分内容是直接从别处复制过来的,故文章定为转载类别。更多关于变量命名的建议,可以百度搜索获取,我不再一一列举。
一、语法过关
在所有关于语言类入门书籍中,一般最开始就会提到关于命名的语法规则,C++的语法规则大致如下:
1、 变量名只能是字母(A-Z,a-z)和数字(0-9)或者下划线(_)组成。
2、 第一个字母必须是字母或者下划线开头。
3、 不能使用C++关键字来命名变量,以免冲突。
4、 变量名区分大小写。
二、名字体现含义
这个不用多说,道理也很简单。如果变量名没有体现含义的话,后期会对变量意义产生混淆,比如所int i,大家根本不知道这个i到底是干什么用的。
三、变量名体现类型
对于很多新手(包括以前的我),在举个很简单的例子,命名一个int型变量wage,表示员工的工资。当代码量很少时,你看下定义,就知道这个变量表示的是整型数据,而代码行数很多的时候,代码中又充斥着各种类型的变量时,很容易产生混淆。一些常用的类型的前缀如下:
1、 整型前缀
int iId; //int前缀:i
short sId; //short前缀:s
unsigned int uId //
unsigned int 前缀:u
long lId; //long前缀:l
2、 浮点型前缀
float fValue; //float前缀:f
double dValue; //double前缀:d
3、 字符型前缀
char cChar; //char前缀:c
4、 字符串前缀
char szPath; //char字符串前缀:sz
string sPath; //string字符串前缀:s
5、 布尔型前缀
bool bIsOK; //bool类型前缀:b
6、 指针型前缀
char * pPath; //指针前缀:p
7、 数组前缀
int arrnNum; //数组前缀:arr
8、 结构体前缀
STUDENT tXiaoZhang; //结构体前缀:t
9、 枚举前缀
enum eWeek; //枚举前缀:e
10、 字节的前缀
BYTE byIP; //字节前缀:by
11、 字的前缀
DWORD dwMsgID; //双字前缀:dw
WORD wMsgID; //单字前缀:w
12、 STL容器前缀
vector vecValue; //vector容器前缀:vec
四、全局变量命名
全局变量一律以g_开头,后面为变量,变量同时还要加前缀。
五、成员变量命名
成员变量统一加_前缀。例如整型成员变量,定义为_iAge。
其它类型的规则还有很多,这里没有一一列举了。上述也有部分内容是直接从别处复制过来的,故文章定为转载类别。更多关于变量命名的建议,可以百度搜索获取,我不再一一列举。
相关文章推荐
- PCA和Whitening
- 论坛自动发帖原理介绍
- 字节流转换成字符流
- oracle数据库学习笔记(一)
- BestCoder Round #54 (div.2) HDU5428 The Factor
- 由于空间,注定的结果——第五届山东省ACM编程比赛总结
- 极角排序
- 计算机选课程序(C#实验)
- PTA数据结构 5-5 堆中的路径
- NGINX开篇
- Mac系统截图快捷键
- Uva11383 二分图的完美匹配(深入理解KM算法)
- AndroidStudio .9图引用出错
- hihocoder1238 Total Highway Distance(DFS+二分查找/map)
- 矩阵分解的隐因子模型
- 第一章 采购的类别
- 类型参数约束
- HTTP 状态码
- 软件测试管理要素
- Apache HTTP Server与Tomcat的三种连接方式介绍