变量命名的通用规则
目录
1、变量名只能是字母(A-Z,a-z)、数字(0-9)或下划线。
1、第一个字母不能是数字,例如2Lerver这不是一个合法的C++变量。
1、不能是c++关键字,例如不能用class这个单词来命名一个变量。
1、进程间共享的共享数据段全局变量(global global):gg_
1、windows颜色类型的前缀:cr COLORREF crFront;
1、windows中DC(设备上下文)类型的前缀 CClientDC dcClient;
1、类的成员变量以m_开头,后面为变量体,变量体依然要有前缀。
1、定义一个变量,为了简化,在不影响变量意义的情况下,可以仅仅使用前缀。 RECT rc;
1、全局变量一律以g_开头,后面为变量体,变量体依然要有前缀。 int g_iNums;
1、变量体如果是多个单词,每个单词的首字母大写。 int iStudentAge;
1、在意义明确的情况下可以仅仅使用首字母命名变量可以缩短变量名。 int iID;
1、定义一个类使用C作为类名的前缀。 class CStudent { … };
一、参考
https://blog.csdn.net/u012314708/article/details/52130961
https://blog.csdn.net/ainew/article/details/45582231
一 、普通变量:
前缀 类型
a 数组 (Array)
b 布尔值 (Boolean)
by 字节 (Byte) == 8 bit
c 有符号字符 (Char)
cb 无符号字符 (Char Byte,没有多少人用)
cr 颜色参考值 (ColorRef)
cx,cy 坐标差(长度 ShortInt)
dw 双字 (Double Word) == 4 Byte == 4 * 8 bit
fn 函数(function)
h 句柄(Handle)
i 整型(int)
l 长整型 (Long int)
lp 长指针(Long Pointer)
m_ 类的成员(member of a class)
n 短整型 (Short Int)
np 近指针(Near Pointer)
p 指针(Pointer)
s 字符串型(string)
sz 以字符''结尾的字符串 (String with Zero End)
w 字(Word) == 2 Byte == 2 * 8 bit
一 、 MFC中ID
IDC_:控件的ID命名前缀(Control)
IDM_:菜单的ID命名前缀(Menu)
IDD_:对话框的ID命名前缀(Dialog)
IDR_:资源的ID命名前缀(Resource)
IDS_:字符串的ID命名前缀(String)
IDB_:位图资源的ID命名前缀(Bitmap)
一 、 vc资源名字定义格式:
菜单: IDM_XX //M:Menu
位图: IDB_XX //B:Bitmap
对话框: IDD_XX //D:Dialog
字符串: IDS_XX //S:String
ICON: IDI_XX //I:Icon
按钮控件: IDC_BTN_XX //BTN:Button
编辑控件: IDC_EDT_XX //EDT:EditBox
列表控件: IDC_LST_XX //LST:ListCtrl
树表控件: IDC_TRE_XX //TRE:TreeCtrl
富文本控件: IDC_RCH_XX //RCH:RichEdit
静态本控件: IDC_STT_XX //STT:StaticText
组合框控件: IDC_CMB_XX //CMB:ComboBox
滚动条控件: IDC_SCR_XX //SCR:ScrollBar
滑动条控件: IDC_SLD_XX //SLD:Slider
多选项控件: IDC_CHK_XX //CHK:CheckBox
单选项控件: IDC_RDB_XX //RDB:RadioButton
一 、 MFC 消息命名
ABM 应用程序桌面工具条application desktop toolbar
BM 按钮 button control
CB 组合框 combo box control
CBEM 扩展组合框 extended combo box control
CDM 通用对话框common dialog box
DBT 设备devicae
DL 下拉列表 drag list box
DM Default Push button control
DTM Date and time picker control
EM 编辑框edit control
HDM Header control
HXM 热键hot key control
IPM IP控件IP address control
LB 列表框list box control
LVM 列表视图list view control
MCM 日历控件month calendar control
PBM 进度条progress bar
PGM Pager control
PSM 属性property control
RB 伸缩条rebar control
SB 状态条status bar window
SBM 滚动条scrol bar control
STM 静态条static control
TB 工具条toolbar
TBM 跟踪条trackbar
TCM Tab control
TTM Tooltip control
TVM 树视图tree_view control
UDM Up_down control
WM 一般窗口general window
一、注意:
1、变量名只能是字母(A-Z,a-z)、数字(0-9)或下划线。
1、第一个字母不能是数字,例如2Lerver这不是一个合法的C++变量。
1、不能是c++关键字,例如不能用class这个单词来命名一个变量。
1、区分大小写,例如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、局部变量:tmp_
1、类的成员变量(member):m_
1、类的静态成员变量(static member):sm_
1、静态变量(static):s_
1、外部全局变量(global):g_
1、静态全局变量(static global):sg_
1、进程间共享的共享数据段全局变量(global global):gg_
1、除非不得已,否则应该尽可能少使用全局变量。
1、整型的前缀
short sValue; //s为short的前缀 int iAge; //i为int的前缀
unsigned int uiAge; //ui为unsigned int的前缀(两个单词的首字母) //也有用u做前缀的
long lValue; //l为long的前缀
1、浮点型的前缀
float fScore; //f为float的前缀
double dValue; //d为double的前缀
1、字符型的前缀
char cChar; //c为char的前缀 //个人喜欢用a做前缀
TCHAR tcChar //多字节字符和Unicode字符兼容类型的前缀tc wchar_t wcChar //宽字符前缀wc
1、字符串的前缀
char szName[30]; //sz为C语言字符串的前缀 string strName; //str为C++字符串变量的前缀 CString strInfo; //str为MFC字符串变量的前缀
1、布尔型的前缀
bool bPass; //b为bool的前缀
1、指针型的前缀
int *pValue; //p为指针的前缀
说明:由于指针是指向一定数据类型的变量,因此p后面要不要再加一个前缀一直让我举棋不定。如果再加上前缀比如: int * piKey;
char * pszInfo;
这样似乎意义更完整,但势必会增加变量的字符长度。因此,这里就不硬性规定了。但是,指针变量以p开头应该是雷也打不动的。
1、数组的前缀
int arrNum[10]; //arr为数组的前缀
说明:和指针变量一样,arr后是否再加数组元素的数据类型前缀取决于你自己。 string arrstrName[3]; //C++字符串数组,加上去似乎很别扭
1、枚举变量的前缀
enum emWeek; //em为枚举变量的前缀
1、结构变量的前缀:t
定义结构体为了保证和C语言和C++的写法兼容性,一律采用typedef语句。
typedef struct T_NODE
{
int iData;
}tNode, *tPNode;
T_NODE tNode; //结构名称以T_开头
1、字节变量的前缀:
by BYTE byInfo;
1、字变量的前缀
DWORD dwInfo; //双字 WORD wInfo; //单字
1、字符指针的前缀
LPCTSTR ptszInfo; //ptsz表示前缀,t表示TCHAR类型 LPCSTR pszInfo; LPSTR pszInfo;
1、STL容器类型前缀 vector<int> vecValue;
说明:vec表示vector容器的前缀,为了简化变量,变量体后面不再使用前缀 list<double> lstInfo;
1、MFC绑定控件变量的前缀
CEdit m_ctlName; //对象变量,变量体前统一用ctl表示 //个人喜欢用m_ctrl
int m_iAge; //值变量,变量体有表示值数据类型的前缀
说明:由于长短指针在32位操作系统后已无区别,所以不再区分,一律以p开头,这也与指针变量以p开头的原则贴得更近。
1、矩形结构的前缀:
rc RECT rcClient; CRect rcWin;
1、句柄对象一律以h开头
HWND hWndName; HBRUSH hBr; HPEN hPen; HBITMAP hBmpBack;
1、windows颜色类型的前缀:cr COLORREF crFront;
1、windows中DC(设备上下文)类型的前缀 CClientDC dcClient;
1、类的成员变量以m_开头,后面为变量体,变量体依然要有前缀。
int m_iDepth;
1、定义一个变量,为了简化,在不影响变量意义的情况下,可以仅仅使用前缀。 RECT rc;
1、全局变量一律以g_开头,后面为变量体,变量体依然要有前缀。 int g_iNums;
1、变量体如果是多个单词,每个单词的首字母大写。 int iStudentAge;
1、在意义明确的情况下可以仅仅使用首字母命名变量可以缩短变量名。 int iID;
说明:仅使用首字母表示变量体的前提是保证变量的意义,比如变量iStudentAge如果声明成:
int iSA; //这样将失去意义,不可取