程序设计命名规则

1. 基本要求

  • 规则
    • 变量名只能是字母(A-Z,a-z)和数字(0-9)或者下划线(_)组成。
    • 第一个字母必须是字母或者下划线开头。
    • 不能使用C++关键字来命名变量,以免冲突。
    • 变量名区分大小写。
  • 命名原则
    • 命名采用驼峰式,如procGetRiskFactor。不采用驼峰式,则采用下划线如:get_risk_factor。
    • 在保持一个标识符意思明确的同时,应当尽量缩短其长度。
    • 标识符采用英文单词或其组合,应当直观且可以拼读,可望文知意,用词应当准确。
    • 不要出现仅靠大小写区分的相似的标识符,例如“i”与“I”,“function”与“Function”等等。
    • 避免在不同级别的作用域中重名。如全局变量和局部变量中出现相同的变量名。
    • 用正确的反义词组命名具有互斥意义的标识符,如:“nMinValue"和"nMaxValue”,“GetName()” 和 “SetName()” …
    • 尽量避免名字中出现数字编号,如Value1,Value2等,除非逻辑上的确需要编号。这是为了防止程序员偷懒,不肯为命名动脑筋而导致产生无意义的名字(因为用数字编号最省事)。

2. 命名前缀

2.1 类、结构

C++类/结构的命名推荐的组成形式
类的名称都要以大写字母“C”开头,后跟一个或多个单词。为便于界定,每个单词的首字母要大写。类的命名推荐用"名词"或"形容词+名词"的形式,例如:“CAnalyzer”, “CFastVector” 。

2.2 函数

类型说明
函数的命名函数的名称由一个或多个单词组成。为便于界定,每个单词的首字母要大写。
推荐的组成形式函数名应当使用"动词"或者"动词+名词"(动宾词组)的形式。例如:“GetName()”, “SetValue()”, “Erase()”, “Reserve()” …
保护成员函数保护成员函数的开头应当加上一个下划线“_”以示区别,例如:“_SetState()” …
私有成员函数类似地,私有成员函数的开头应当加上两个下划线“__”,例如:“__DestroyImp()” …
虚函数虚函数习惯以“Do”开头,如:“DoRefresh()”, “_DoEncryption()” …
回调和事件处理函数回调和事件处理函数习惯以单词“On”开头。例如:“_OnTimer()”, “OnExit()” …

2.3 变量

  1. 变量命名
    变量名由作用域前缀+类型前缀+一个或多个单词组成。为便于界定,每个单词的首字母要大写。对于某些用途简单明了的局部变量,也可以使用简化的方式,如:i, j, k, x, y, z …
  2. 作用域前缀
前缀说明
局部变量
m类的成员变量(member)
sm类的静态成员变量(static member)
s静态变量(static)
g外部全局变量(global)
sg静态全局变量(static global)
gg进程间共享的共享数据段全局变量(global global)
  • 除非不得已,否则应该尽可能少使用全局变量。
  1. 类型前缀
前缀说明
n整型和位域变量(number)
e枚举型变量(enumeration)
c字符型变量(char)
b布尔型变量(bool)
f浮点型变量(float)
p指针型变量和迭代子(pointer)
w/dw字(双字)的前缀。DWORD dwMsgID;
pfn特别针对指向函数的指针变量和函数对象指针(pointer of function)
g数组(grid)
i类的实例(instance)。对于经常用到的类,也可以定义一些专门的前缀,如:std::string和std::wstring类的前缀可以定义为"st",std::vector类的前缀可以定义为"v"等等。
  • 类型前缀可以组合使用,例如"gc"表示字符数组,"ppn"表示指向整型的指针的指针等等。
  1. 组合形式
    变量的名字应当使用"名词"或者"形容词+名词"。例如:“nCode”, “m_nState”,“nMaxWidth” …

2.4 常量

常量名由类型前缀+全大写字母组成,单词间通过下划线来界定,如:cDELIMITER, nMAX_BUFFER 。类型前缀的定义与变量命名规则中的相同。

2.5 枚举、联合、typedef

枚举、联合、typedef语句生成的类型名由全大写字母组成,单词间通过下划线来界定,如:FAR_PROC, ERROR_TYPE 。

2.6 宏、枚举值

宏和枚举值由全大写字母组成,单词间通过下划线来界定,如:ERROR_UNKNOWN, OP_STOP。

2.7 MFC控件

链接: MFC命名规则
MFC控件绑定值类别或者控件类类别,需要以m_开头并且加前缀。如:

控件关联变量
CEditm_EDT_strValue;     //Edit绑定控件类别
CListBoxm_LB_nName;     //ListBox
CListCtrlm_LC_Name;      //ListCtrl;
CComboBoxm_CB_Name;    //ComboBox

控件ID尽量简化并表明控件类型和意义。

控件控件ID
ButtonIDC_BNT_NAME
EditIDC_EDT_NAME
ListBoxIDC_LB_NAME
ListCtrlIDC_LC_NAME
ComboBoxIDC_CB_NAME

2.8 其他

序号类型命名
1STL容器前缀vector vecValue; //vector容器前缀:vec
2RECT矩形结构前缀RECT rcChild;   //rc
3句柄前缀HWND hWndDlg; HBRUSH hBr; HPEN hPen; HBITMAP hBmpBack;
4Windows颜色前缀COLORREF crFont; //cr
5Windows DC前缀CDC dcClient;     //dc
  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值