C++编码规范

来源:互联网 发布:中华鳖精 知乎 编辑:程序博客网 时间:2024/05/06 20:26

//当年周经理教给我们的,记下来大家一起学习吧。

1.基本要求
1.1 程序结构清晰,简单易懂,单个函数的程序行数不得超过100行。
1.2 打算干什么,要简单,直接了当,代码精简,避免垃圾程序。
1.3 尽量使用标准库函数。
1.4 不要随意定义全局变量,尽量使用局部变量。
1.5 仔细考虑逻辑分支,不能出现逻辑错误
1.6 工程名、类名、成员名、函数名全部都不能用中文。

 

2.可读性要求
2.1 可读性第一,效率第二。
2.2 每个函数,都应该有函数头说明,说明规格见规范。(规范见最下面的函数注释)
2.3 主要变量(结构、联合、类或对象)定义或引用时,加以注释反映其含义。
2.4 常量定义时应有相应说明。
2.5 在典型算法前都应有注释。
2.6 利用缩进来显示程序的逻辑结构,缩进量一致并以Tab键为单位.
2.7 注释可以与语句在同一行,也可以在上行。
2.8 空行和空白字符也是一种特殊注释,对于一个函数内的功能模块采用空行进行分割.
2.9 注释行数(不包括程序头和函数头说明部份)应占总行数的 1/5 ~ 1/3 。


3.变量命名
命名必须具有一定的实际意义,形式为xAbcFgh,x由变量类型确定,Abc、Fgh表示连续意义字符串.
前缀        表示的类型    例    子
a      数组变量      aScore[50]
b      布尔变量      bFlag,bIsEnd
c      字符变量       cSex
i      整形变量         iNum
ui      无符号整形变量     uiStart,uiPos
sz      以0结束的字符串变量  szMyName
p      指针变量    pszString,pMyDlg
h      句柄    hWnd,hPen,hDlg
m_      类的成员变量   m_xStart
C      类和结构                 CDialog,CView,CMysdiApp,CRuntimeClass
ID*_      资源标识    ID_,IDD_,IDC_,IDB_,IDI_
g_       全局变量    g_nMsg, g_bFlag

局部变量中可采用如下几个通用变量:   nTemp,nResult,index

 

4.常量命名和宏定义
常量和宏定义必须具有一定的实际意义;
常量和宏定义在#include和函数定义之间;
常量和宏定义必须全部以大写字母来撰写,中间可根据意义的连续性用下划线连接,每一条定义的右侧必须有一简单的注释,说明其作用;

 

5.资源名字定义格式: 全部用大写
菜单:IDM_XX或者CM_XX
位图:IDB_XX
对话框:IDD_XX
字符串:IDS_XX
对话框下面控件:IDC_控件标签_描述,如IDC_EDIT_YEAR, IDC_BUTTON_SUBMIT,IDC_COMBOX_CLASS

 

6.函数命名
第一个字母必须使用大写字母,要求用大小写字母组合规范函数命名,必要时可用下划线间隔,示例如下:
void PrintTrackData ();  //函数的功能作用描述
void ImportantPoint (void);  //函数的功能作用描述
void ShowChar (int , int);  //函数的功能作用描述

 

7.结构体命名
结构体类型命名必须全部用大写字母,原则上前面以下划线开始;

结构体变量命名必须用大小写字母组合,第一个字母必须使用大写字母,必要时可用下划线间隔。
typedef struct
{
   char szVersion[10];
   unsigned long ulMaxTables;
}DBS_DATABASE;

DBS_DATABASE GdataBase;

 

8.文件注释:
每个文件头部,首先用多行注释写明文件名,创建人,创建日期,创建原因,修改记录
/************************************************
File name:Helloworld.cpp
Create by:Cgema
CreateDate:2011-06-01
Use:用来编码举例C++程序基本结构
Change by: 2011-06-03 by Cgema 修改代码以说明循环结构的用法
    2011-06-05 by Cgema 将循环结构封装到FunFor(),演示方法的定义和调用
    2011-06-09 by Cgema 新增人物类的实现,学习面向对象思想中类的定义和实现
************************************************/

 

9.类注释:
每个类前面,添加注释,说明类名,类的创建人,创建日期,类的用途或创建思想,修改记录
/************************************************
Class name: CPerson
Create by:Cgema
CreateDate:2011-06-01
Explain:这个类用来描叙计费系统中基本用户,是各种用户类的基类
Change by: 2011-06-03 by Cgema 新增构造函数的实现
************************************************/

 

10.函数注释:
添加一个函数时,在函数前添加一定的注释,这样增加代码的可读性。
函数内部的实现,对于复杂部分也要加以注释,进行说明。
/*********************************************************
函数名称:TranDateToDay
功能描述:将日期转换成天数
作者:   Cgema
创建时间:2011-06-11
参数说明:iYear-年份;iMonth-月份;iDay-天
返 回 值:iSum-日期对应年份的天数
*********************************************************/
int CDateTran::TranDateToDay(int iYear, int iMonth, int iDay)
{
 int iSum = 0;

 .......

 //返回计算出来的天数
 return iSum;
}

 

11.代码修改注释:
每次修改代码时,不能简单的删除原有代码,用新代码取而代之,
而是应该将原有代码注释起来,并标明修改时间,修改人,原代码和新代码,最好还写明修改原因
  //2011年06月10日(14:58:59)Cgema 修改。
  //原代码为:
//  int n;
//  cout<<"请输入一个数字:";
//  cin>>n;
//  if(n==0)
  //新代码为:
  // 改为习惯的C语法格式
  int n;
  printf("请输入一个数字:");
  scanf("%d", &n);
  if(n==0) 
  //2011年06月10日(14:58:59)Cgema 修改结束。


12.一般情况下,源程序有效注释量必须在20%以上。说明:注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。

13.说明性文件(如头文件.h文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。

/************************************************************
Copyright (C), 1988-1999, Tech. Co., Ltd.
FileName: test.cpp
Author: 
Version : 
Date:
Description: // 模块描述 
Version: // 版本信息
Function List: // 主要函数及其功能
1. -------
History: // 历史修改记录
<author> <time> <version > <desc>
David 96/10/12 1.0 build this moudle 
***********************************************************/

原创粉丝点击