C++编码规范Ver11Word下载.docx
- 文档编号:20925655
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:23
- 大小:28.05KB
C++编码规范Ver11Word下载.docx
《C++编码规范Ver11Word下载.docx》由会员分享,可在线阅读,更多相关《C++编码规范Ver11Word下载.docx(23页珍藏版)》请在冰豆网上搜索。
7.5、枚举8
二、注释规范8
1、一般规范8
2、常量、变量和宏的注释8
3、结构体和联合体的注释9
4、函数的注释9
5、文件头部注释10
6、语句注释11
三、文件编写规范11
四、函数编写规范12
1、函数划分12
2、函数缩进12
3、其他13
五、变量和常量使用规范14
六、其他类型的使用规范14
七、类的编写规范15
八、可移植性规范15
九、其他规范17
术语说明:
必须:
解释为必须严格遵循的要求。
最好:
解释为建议遵循的要求。
可以:
解释为可以选择遵循的要求。
禁止:
解释为必须严格禁止遵循的要求。
一、命名规范
1、一般规范
∙C++命名规范包括文件命名规范和标识命名规范。
∙标识是指C++语言中语法对象的名字,包括常量名、变量名、函数名、类和类型名及预处理名等,标识名的基本语法必须是以字母开始,由字母、数字及下划线组成的单词。
∙标识名最好分为两部分:
标识前缀+含义标识。
∙标识前缀必须由1个或多个不超过3个字母的缩写词组成。
在有些情况下标识名中可以不含标识前缀。
∙含义标识按其应用的含义可以由一个或多个词组成.含义标识中的词最好不缩写,除非这种缩写比较通用,禁止在同一系统中对同一单词使用不同的表示法(如全写和缩写均使用).缩写词在书写时最好全部大写.
2、文件命名规范
∙文件名必须由前缀和后缀组成,最好采用长文件命名格式。
∙文件名必须用英文字母表达,禁止使用中文。
∙对于几个单词组合表达的文件名,每个单词第一个字母必须大写。
∙源文件后缀格式可以为.cpp或.cxx,头文件后缀格式可以为:
.h,.hxx。
例:
ScreenCapturer.h,H263Encoder.cpp
∙每一个类最好都有一个头文件和源文件,头文件和源文件的前缀必须与类名相对应。
类CBufferControl对应BufferControl.h,BufferControl.cpp
类CVideoFrame对应VideoFrame.h,VideoFrame.cpp
3、变量命名规范
∙变量命名格式必须是:
变量名=<
scope_>
+<
prefix_>
qualifier>
。
范围前缀类型前缀含义标识
∙范围前缀的取名必须遵照下表:
前缀
类型
例子
g_
全局作用域
g_Servers
m_
成员变量
m_pDoc,
l_
局部作用域
l_strName
s_
静态变量作用域
s_strName
注:
局部作用域前缀可以省略不用
∙类型前缀的取名必须遵照下表:
描述
ch
char
8-bitcharacter
chGrade
TCHAR
16-bitcharacterif_UNICODEisdefined
chName
b
BOOL
Booleanvalue
bEnabled
n
int
Integer(sizedependentonoperatingsystem)
nLength
UINT
Unsignedvalue(sizedependentonoperatingsystem)
s
short
16-bitInteger
sLength
w
WORD
16-bitunsignedvalue
wPos
l
LONG
32-bitsignedinteger
lOffset
dw
DWORD
32-bitunsignedinteger
dwRange
p
*
Ambientmemorymodelpointer
pDoc
lp
FAR*
Farpointer
lpDoc
lpsz
LPSTR
32-bitpointertocharacterstring
lpszName
LPCSTR
32-bitpointertoconstantcharacterstring
LPCTSTR
32-bitpointertoconstantcharacterstringif_UNICODEisdefined
h
handle
HandletoWindowsobject
hWnd
lpfn
(*fn)()
callbackFarpointertoCALLBACKfunction
lpfnAbort
f
float
floatVariable
fSpeedRate
d
double
doubleVariable
dSpeedRate
st
struct
structVariable
stParaInfo
un
union
unionVariable
unWeekDay
fp
FILE*
filepointer
fpTime
c
const
const[VariableType]Variable
cnVariable
sz
char*
null-terminatedstring
szVariable
pv
void*
Pointertovoidtype
pvVariable
1、当变量作为函数参数使用时,建议如下使用范围前缀:
i_:
输入参数
o_:
输出参数
io_:
输入输出参数
voidCHash:
:
Compute(int*io_pnData,inti_nLen,int*o_pnRet);
2、除以上规定外,WIN32变量的类型前缀的命名请尽量与微软的命名风格一致。
4、实例命名规范
∙这里的实例主要指类、结构体和联合体的实例。
∙实例命名格式必须为:
范围前缀+[p]+[辅助信息]+含义标识
其中,范围前缀同变量的范围前缀,辅助信息主要说明实例的一些具体信息,含义标识指对应类、结构体或联合体的含义标识或其缩写,若实例为指针形式必须加p。
CH263Encoder*m_pH263Encoder;
CConfigDlgg_NewConfigDlg;
∙常用Windows对象名称缩写
Windows对象
例子变量
MFC类
例子对象
WND
hWnd;
CWnd*
pWnd;
HDLG
hDlg;
CDialog*
pDlg;
HDC
hDC;
CDC*
pDC;
HGDIOBJ
hGdiObj;
CGdiObject*
pGdiObj;
HPEN
hPen;
CPen*
pPen;
HBRUSH
hBrush;
CBrush*
pBrush;
HFONT
hFont;
CFont*
pFont;
HBITMAP
hBitmap;
CBitmap*
pBitmap;
HPALETTE
hPalette;
CPalette*
pPalette;
HRGN
hRgn;
CRgn*
pRgn;
HMENU
hMenu;
CMenu*
pMenu;
HWND
hCtl;
CStatic*
pStatic;
CButton*
pBtn;
CEdit*
pEdit;
CListBox*
pListBox;
CComboBox*
pComboBox
实际使用时必须加进范围前缀和辅助信息等。
HWNDg_hMainWnd,g_hChildWnd;
CBitmap*m_pOldBitmap;
CBitmap*m_pNewBitmap;
5、函数数命名规范
∙类成员函数命名规则最好是:
函数名=函数的含义标识
∙其他函数命名规则最好是:
函数名=范围前缀_+函数返回值类型+函数的含义标识
∙函数名的范围前缀可以用来表明函数所属的模块类别。
ui_nShowErrorMsg(),ui表明该函数属于界面模块。
∙函数的含义标识必须能反映函数实现的功能。
∙函数的含义标识中第一个字母必须大写。
∙对于几个单词组合表达的函数的含义标识,每个单词第一个字母必须大
写。
例1:
CheckForErrors()优于ErrorCheck(),
DumpDataToFile()优于DataFile().
例2:
IsHitRetryLimit(),
RetryMax(),
RetryCnt()等函数名切实反映了其实现的功能
6、类命名规范
∙类名中第一个字母必须为大写“C”。
∙对于几个单词组合表达的类名,每个单词第一个字母必须大写。
用CTransmitter而不用Transmitter。
∙在类名中最好通过使用前缀来防止类名冲突,前缀可以由2个或2个以
上的唯一字符组成,前缀必须放在大写字母“C”后。
classCICDLinkList{};
classCAPNLinkList{};
7、其他命名规范
7.1、常量
∙常量名中所有字母必须大写,单词间必须用“_”相隔。
constintA_GLOBAL_CONSTANT=5;
7.2、联合体
∙联合体类型命名的规则必须是:
联合体名=UN_+含义标识。
∙联合体含义标识中所有字母必须大写,单词间必须用“_”相隔。
7.3、结构体
∙结构体类型命名的规则必须是:
结构体名=ST_+含义标识。
∙结构体含义标识中所有字母必须大写,单词间必须用“_”相隔。
7.4、宏
∙所有字母必须大写,单词间必须用“_”相隔。
∙例:
defineENCODING_TIME_TESTING
7.5、枚举
∙枚举名必须加前缀EN_且枚举名中所有字母必须大写,单词间必须用“_”
相隔。
∙枚举的成员变量所有字母必须大写,单词间必须用“_”相隔
enumEN_PIN_STATE{PIN_OFF,PIN_ON};
enum{STATE_ERR,STATE_OPEN,
STATE_RUNNING,STATE_DYING};
二、注释规范
∙注释的目的必须是解释代码的目的、功能和采用的方法,提供代码以外
的信息,帮助读者理解代码,禁止没必要的重复注释信息。
∙注释必须语言简炼、易懂而又准确,所采用的语种必须按“日文--英文--
中文”从高到低的优先级顺序进行选择。
∙单行注释必须用双斜杠进行注释,多行注释必须用/**/进行注释,注释
内容最好放在对应代码的上方。
∙注释与前面的执行语句之间必须空一行。
∙必须边写代码边注释,修改代码同时修改相应的注释,以保证注释与代
码的一致性。
∙注释行数(不包括程序头和函数头说明部分)必须占总行数的1/5到
1/3。
2、常量、变量和宏的注释
∙在常量、变量(临时变量除外)和宏的声明前必须对其作适当注释,注
释说明的要点是:
•被保存值的含义(必须)
•合法取值的范围(可选)
•与其它数据,函数或模块的关系(可选)
//defaultquantilizerlevel,from1to31.
constintDEFAULT_QL=8
//numberofgob,12forCIFand3forQCIF.
intnGob;
3、结构体和联合体的注释
∙对结构体或联合体的注释要点必须是:
•它描述的对象是什么(必须)
•对其分量应按变量注释要求加以注释(必须)
•与其它数据,函数或模块的关系(可选)
//3DPoint(nPosX,nPosY,nPosZ)
typedefstructST_THREED_PT_TAG{
intnPosX;
//xPosition
intnPosY;
//yPosition
intnPosZ;
//zPosition
}ST_THREED_PT;
4、函数的注释
∙对于比较重要的函数或方法必须在其声明处作适当注释,说明该函数的
功能及各参数的含义,注释模版如下:
//Getdatapointerofsubimage
short*GetSubImageData(inti_nLeft,//Leftpositionofsubimage.
inti_nTop,//Toppositionofsubimage.
WORDi_wWidth,//Widthofsubimage.
WORDi_wHeight);
//Heightofsubimage.
∙对于自行编写的函数,若是系统关键函数,必须在函数实现部分的上方
标明该函数的信息,格式如下:
(中文版)
/***************************************************
*函数名:
*功能描述:
*返回值:
*参数:
(名称,含义,取值说明)
*作者:
*时间:
*修改记录:
(修改序号,修改记录,时间,修改人员)
****************************************************/
//(将函数的简单描述放在这里)
(英文版)
/****************************************************
*FunctionName:
*Description:
*ReturnValue:
*Parameters:
(Name,Description,Value)
*Author:
*Date:
*Changelog:
(ID,Date,Author,Description)
//(HereistheTip)
1、在修改记录栏必须按时间先后顺序自下往上排列。
2、注释文本每行的跨度禁止超过上下条纹框的范围,换行时必须以冒号
所在位置为准进行左对齐。
∙例:
/********************************************************************
*FunctionName:
CBufferList:
AllocateMemory
*Description:
AllocateamemoryblockandstoreitsaddresstoBufferList.
*Returntype:
void*
*Argument:
intnNumberofByte:
Bytenumbersofmemoryblock.
BOOLbLogFlag:
Iftrue,thenwritelogfile.
*Author:
Tom()
*Date:
2001-9-27
*Changelog:
$$$Revision1.2,2001-12-15,Robert()
Modifiedtobesuitabletothenewcodingrules
$$$Revision1.1,2001-10-07,Tom()
ReplacetheClasss-CListItemwithnewstruct-ST_ITEM
************************************************************************************/
5、文件头部注释
在文件头部必须加注释表明该文件的一些信息,其格式如下:
/************************************************
(版权所有,,200X-200X)
*文件名:
*版本:
*功能描述:
*创建日期:
*作者:
*修改记录:
(序号,修改说明,日期,修改人)
*************************************************/
(英文版)
/***********************************************************
(Copyright(c)200X-200XICDCo.,Ltd.,)
*FileName:
*VersionNumber:
*Date:
*Author:
(ID,Date,Author,Description,)
*********************************************************/
•必须在版本栏中保留以前的信息,格式如:
1.0/0.8/0.7。
•在修改记录栏必须按时间先后顺序自下往上排列。
•修改记录中必须特别注明修改了哪些函数。
•注释文本每行的跨度禁止超过上下条纹框的范围,换行时必须以冒号所在位置为准进行左对齐。
例:
/***************************************************************************
(Copyright(c)2001-2002ICDCo.,Ltd.,)
*FileName:
BufferList.cpp
2.0/1.0
SourcefileforCBufferList.
Toallocateandfreememoryblocksafely.
Tom(tom@.com)
$$$Revision2.1,2001-12-15,Robert(robert@.com)
Modifiedtobesuitabletothenewcodingrulesinallfunctions.
$$$Revision1.1,2001-10-07,Tom(tom@.com)
ReplacetheCListItemwithnewstruct-ST_ITEMinSetLogOn().
***************************************************************************/
6、语句注释
∙对语句的注释必须放在其上方相邻位置,不要放在下面。
∙在程序块的结束行右方最好加注释标记,以表明某程序块的结束。
∙过长的函数实现,最好将其语句按实现的功能分段加以概括性说明.
∙必须对不易理解的分枝条件表达式加注释.
三、文件编写规范
∙头文件的构成:
1、头文件的头部注释
2、防止重复包含的宏:
#ifndef_文件名_扩展名
#define_文件名_扩展名
3、包含文件部分(系统头文件、项目头文件、本地头文件)(可选)
4、宏定义部分(可选)
5、类型定义部分(可选)
6、结构体定义部分(可选)
7、函数或类的声明部分
8、防止重复包含的宏:
#endif
∙源文件的构成:
1、源文件的头部注释
2、包含文件部分(系统头文件、项目头文件、本地头文件)(可选)
3、宏定义部分(可选)
4、类型定义部分(可选)
5、结构体定义部分(可选)
6、函数或类的定义部分
包含文件时禁止使用绝对路径。
四、函数编写规范
1、函数划分
∙良好的函数划分,必须能够自顶向下逐级抽象地展现设计思想,提高程
序的易读性和自说明性。
∙函数必须是按功能划分的,每个函数必须只做一件事情(高内聚准则)。
∙相关的一组函数之间的关联必须尽可能少(低耦合准则)。
∙在
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 编码 规范 Ver11
![提示](https://static.bdocx.com/images/bang_tan.gif)