C++代码规范之命名规则

一、命名的两个基本原则
1、含义清晰,不易混淆;
2、不和其它模块、系统API的命名空间相冲突。

二、命名通则
1、在所有命名中,都应使用标准的英文单词或缩写;不得使用拼音或拼音缩写,除非该名字描述的是文
特有的内容(如半角、全角、声母、韵母等);除非必要,不要用数字或较奇怪的字符来定义标识符。
2、所有命名都应遵循达意原则,即名称应含义清晰、明确。
3、所有命名都不易过长,应控制在规定的最大长度以内。
4、所有命名都应尽量使用全称。
5、命名中若使用特殊约定或缩写,则要有注释说明。
6、自己特有的命名风格,要自始至终保持一致,不可来回变化。

说明:
个人的命名风格,在符合所在项目组或产品组的命名规则的前提下,才可使用。(即命名规则中没有规定到的地方才可有个人命名风格)。

7、在同一软件产品内,应规划好接口部分标识符(变量、结构、函数及常量)的命名,防止编译、链接时产生冲突。
8、对于变量命名,禁止取单个字符(如i、j、k...),建议除了要有具体含义外,还能表明其变量类型、数据类型等,但i、j、k作局部循环变量是允许的。

说明:
变量,尤其是局部变量,如果用单个字符表示,很容易敲错(如i写成j),而编译时又检查不出来,有可能为了这个小小的错误而花费大量的查错时间。
例:下面所示的局部变量名的定义方法可以借鉴。
int liv_Width
其变量名解释如下:
l 局部变量(Local)  (其它:g全局变量(Global)...)
i 数据类型(Interger)
v 变量(Variable)   (其它:c常量(Const)...)
Width  变量含义
这样可以防止局部变量与全局变量重名。

9、命名规范必须与所使用的系统风格保持一致,并在同一项目中统一,比如采用UNIX的全小写加下划线的风格或大小写混排的方式,不要使用大小写与下划线混排的   方式,用作特殊标识如标识成员变量或全局变量的m_和g_,其后加上大小写混排的方式是允许的。
例: Add_User不允许,add_user、AddUser、m_AddUser允许。
10、用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。
说明:下面是一些在软件中常用的反义词组。


代码如下:

add / remove begin / end create / destroy   insert / delete
first / last get / releaseincrement / decrement   put / get
add / delete lock / unlockopen / closemin / max
old / newstart / stopnext / previoussource / target
show / hide  send / receive   up / downcut / paste

例:


代码如下:

int  min_sum;
   int  max_sum;
   int  add_user( BYTE *user_name );
   int  delete_user( BYTE *user_name );

11、除了编译开关/头文件等特殊应用,应避免使用_EXAMPLE_TEST_之类以下划线开始和结尾的定义。
12、程序中不要出现标识符完全相同的局部变量和全局变量,尽管两者的作用域不同而不会发生语法错误,但会使人误解。

三、具体规范
1、工程名
不强制统一。

2、文件名:
基于工程名,开头3个字母应表明与哪一个工程相关。
后面的字母应能够区别不同的功能。
不区分大小写。
长度不限于8.3格式,建议不多于30个字符。
若文件用于定义和实现类,建议文件名与类名保持一致。

3、函数名:
参照 Windows API 的命名规范。
推荐使用动宾结构。函数名应清晰反映函数的功能、用途。
函数名最长不得超过30个字符。
函数名第一个字母必须大写。
全局函数必须以小写前缀"g"开头。全局函数的名字应当使用“动词”或者“动词+名词”(动宾词组)。类的成员函数应当只使用“动词”,被省略掉的名词就是对象本身。
例:
DrawBox(); // 全局函数
box->Draw(); // 类的成员函数

4、变量名:
原则上,变量名的命名遵从匈牙利记法。即:前缀 + 类型 + 变量名
变量名最长不得超过20个字符。
变量的名字应当使用“名词”或者“形容词+名词”。
例:
  float value;
  float oldValue;
1)格式:[m_|s_|g_] type [class name|struct name] variable name
2)解释:
  m_ : 类的成员变量
  ms_:类的静态成员变量
  s_ :静态全局变量
  g_ :普通全局变量
  类型缩写(type)
  char, TCHAR: ch
  char[],TCHAR[]: sz
  bool, BOOL: b
  int, __int16,__int32,__int64: n
  long: l
  double: d
  float: ft
  BYTE: by
  WORD: w
  DWORD: dw
  unsigned: u
  function: fn
  p :pointer
  lp :pointer
5、类名:
必须以大写"K"开头,后面字母反映具体含义,以清晰表达类的用途和功能为原则。
接口必须以大写"I"开头,代表 Interface 。
当名称由多个单词构成时,每一个单词的第一个字母必须大写。

6、结构名、宏名、枚举名、联合名:
全部大写。
枚举名加小写前缀"enum"。
例:


代码如下:

typedef enum _KFILE_OPEN_MODE
   {
 enumOPEN_READONLY = 0;
 enumOPEN_READWRITE = 1;
 enumCREATE_ALWAY = 3 ;
} KFILE_OPEN_MODE;
宏名加小写前缀"def"。

例:
#define defMAXNUMBER 100
  结构名加小写前缀"tag",之后必须以大写"K"开头。
例:


代码如下:

typedef struct tagKPOINT
 {
int x;
int y;
} KPOINT;

联合名加小写前缀"uni"。
例:


代码如下:

typedef union _VARIANT
{
  char unichVal;
  int uninVal;
  long unilVal;
  float uniftVal;
} VARIANT;

说明:对接口部分的标识符应该有更严格限制,防止冲突。如可规定接口部分的变量与常量之前加上  “模块”标识等。
说明:应该在源文件的开始之处,对文件中所使用的缩写或约定,特别是特殊的缩写,进行必要的注释说明。
说明:较短的单词可通过去掉“元音”形成缩写;较长的单词可取单词的头几个字母形成缩写。
一些单词有大家公认的缩写。
例:temp 可缩写为 tmp


代码如下:

flag 可缩写为 flg
   statistic 可缩写为 stat
   increment 可缩写为 inc
   message 可缩写为 msg

(0)

相关推荐

  • 新旧MFC版本实现CEdit透明的2种方法的实例代码

    MFC 4.2(Visual Studio 6)实现起来很方便,只需要在对话框类下处理WM_CTLCOLOR消息,然后以下代码即可: 复制代码 代码如下: HBRUSH CAlphaEditboxDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)  {     HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of t

  • MFC实现全屏功能代码实例

    windows应用程序中有很多的播放器都有快捷键控制窗口以全屏幕的方式显示.MFC实现给应用程序加上全屏幕的功能,并不需要很多的代码,比如给一个基于对话框的应用程序加上全屏功能只需要以下少量代码就可以实现了. 实现代码如下所示: void CFullScreenDlg::FullScreenView(void) { RECT rectDesktop; WINDOWPLACEMENT wpNew; if (!IsFullScreen()) { // We'll need these to rest

  • MFC中exe图标修改的方法

    复制代码 代码如下: m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON1); SetIcon(m_hIcon, TRUE); // Set big icon  SetIcon(m_hIcon, FALSE); // Set small icon; 修改可运行程序的启动图标通过修改resource.h对应的加载图标的ID为最小来实现; 修改关于对话框的图标可通过覆盖工程中res文件夹下的项目名.ico图标来实现.

  • C# 命名规则(挺不错的)

    1.用Pascal规则来命名方法和类型. public class DataGrid { public void DataBind() { } } 2.用Camel规则来命名局部变量和方法的参数. public class Product { private string _productId; private string _productName; public void AddProduct(string productId,string productName) { } } 3.所有的成

  • MFC命名规则汇总

    本文汇总了MFC中消息.控件.对话框等等的命名规则,作为初学者应详细了解并遵守这类规则.详细规则如下所示: 一.MFC中ID 编号原则: IDC_:控件的ID命名前缀(Control) IDM_:菜单的ID命名前缀(Menu) IDD_:对话框的ID命名前缀(Dialog) IDR_:资源的ID命名前缀(Resource) IDS_:字符串的ID命名前缀(String) IDB_:位图资源的ID命名前缀(Bitmap) 二.MFC系统消息前缀小集 ABM        应用程序桌面工具条appl

  • 关于在MFC中将窗口最小化到托盘实现原理及操作步骤

    步骤/方法 (一) 原理 1.最小化的原理:首先要将窗口隐藏,然后在右下角绘制图标. 2.恢复的原理:将窗口显示,再将托盘中的图片删除. (二)程序实现 1.自定义消息WM_SHOWTASK: #define WM_SHOWTASK (WM_USER +1) 2.在MFC的 ::OnSysCommand(UINT nID, LPARAM lParam) 函数体中增加一个命令响应 if(nID==SC_MINIMIZE) ToTray(); //最小化到托盘的函数 3.在消息映射中添加 ON_ME

  • IE8引发 VS2005/2008 MFC向导出错的解决方案

    第一时间测试成功.老外给出的解决方案,测试有效,大家试试. 请按照以下步骤做: - 启动注册表编辑器 regedit (在64位系统上也可以启动32位版本) - 找到"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones", 建立一个名为1000的新键(如果没有的话). - 在这个1000的键下,建立如下DWORD内容: 复制代码 代码如下: Name = 1207 Typ

  • 构建mfc窗体的简单示例

    复制代码 代码如下: #include<afxwin.h>//包含MFC头文件//从MFC的主要框架窗体派生用户窗体类class CMyWnd:public CFrameWnd{public: CMyWnd(LPCTSTR szTitle) {  //调用父类Create函数创建窗体  Create(NULL,szTitle); }};//从MFC的应用程序派生用户程序类class CMyApp:public CWinApp{public: virtual BOOL InitInstance(

  • VC中SDK与MFC的区别浅析

    本文浅析了vc中SDK与MFC的区别,对于初学VC的朋友有一定的学习借鉴价值,详情如下: SDK 是指Software Development Kit 软件开发包 MFC 是指Microsoft Foundation Classes 微软函数类库 因此MFC是对API函数的封装,也算是vc里的SDK   用VC编写Windows程序有两种:1. Windwos c方式(SDK),2.C++方式:即对SDK函数进行包装,如VC的MFC,BCB的OWL等. SDK编程就是直接调用Windows的AP

  • 变量、函数、类的命名规则

    1.命名要名副其实: 命名的时候一定要考虑他的显示意义和语境,不要认为把时间花费在变量的命名上很浪费.当然如果你程序很短的话,就不需要考虑那么多了,埋头就写代码.如果你的项目大,而且文件多的情况下,最好就是要花费时间在命名上,因为你的代码不仅仅只是你一个人看的. 2.避免误导: 也就是说不要把其他平台的关键字拿来命名,比如说我使用javascript语言,而我设计了一个变量为int,这让人会很头疼,为什么要一个int变量呢,难道这段代码是C++.这样就会让人产生误导.如果你想一个整型变量你可以这

  • MFC自定义消息的实现方法

    一.概述: 消息机制是windows程序的典型运行机制,在MFC中有很多已经封装好了的消息,如WM_BTN**等.但是在有些特殊情况下我们需要自定义一些消息去完成一些我们所需要的功能,这时候MFC的向导不能帮助我们做到这一点.对此,我们可以通过添加相应的代码去完成这个功能. 二.实现方法: 添加自定义消息操作如下: 1. 建立MFC工程,如基于对话框的应用程序,Test. 2. 在资源中添加要处理的消息的值,即在CTestDlg.h中添加 如下代码. (因为很多MFC的消息是在WM_USER内的

随机推荐