C++编码规范Word文件下载.docx

上传人:b****5 文档编号:21415269 上传时间:2023-01-30 格式:DOCX 页数:25 大小:25.62KB
下载 相关 举报
C++编码规范Word文件下载.docx_第1页
第1页 / 共25页
C++编码规范Word文件下载.docx_第2页
第2页 / 共25页
C++编码规范Word文件下载.docx_第3页
第3页 / 共25页
C++编码规范Word文件下载.docx_第4页
第4页 / 共25页
C++编码规范Word文件下载.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

C++编码规范Word文件下载.docx

《C++编码规范Word文件下载.docx》由会员分享,可在线阅读,更多相关《C++编码规范Word文件下载.docx(25页珍藏版)》请在冰豆网上搜索。

C++编码规范Word文件下载.docx

_'

classNameOneTwo;

className;

1.3.类库(或程序库)命名(适用于C/C++)

使用命名空间防止名字冲突。

如果编译器没有实现命名空间,需要用前缀来避名名字冲突,不过前缀不要过长(2个字母比较好)。

JohnJohnson完成了一个数据结构的库,它可以使用JJ作为库的前缀,所以类名就象下面这样:

classJjLinkList

{

}

1.4.方法和函数的命名(适用于C++)

使用与类名相同的规则

classNameOneTwo

public:

int 

DoIt();

void 

HandleError();

1.5.类属性的命名(适用于C++)

属性(通常是非公有数据成员)名字以字母'

m'

开头。

在'

m(m_)'

 

后面,使用与类名相同的规则。

'

总是位于其它修饰符(如表示指针的'

p'

)的前面。

VarAbc();

ErrorNumber();

private:

mVarAbc;

mErrorNumber;

String* 

mpName;

1.6.方法和函数参数的命名(适用于C++)

第一个字母必须小写。

第一个字母后面的单词使用与类名相同的规则。

StartYourEngines(

Engine&

rSomeEngine,

Engine&

rAnotherEngine);

1.7.局部变量的命名(适用于C/C++)

所有字母都用小写

使用下划线'

作为单词的分隔。

int

NameOneTwo:

:

HandleError(interrorNumber)

error=OsErr();

Time 

time_of_error;

ErrorProcessorerror_processor;

1.8.指针变量的命名前缀(适用于C/C++)

指针变量多数情况应在前面加'

星号'

*'

应靠近类型,而不是变量名。

String*pName=newString;

特别的:

String*pName,name;

应分成两行来写:

String*pName;

String 

name;

1.9.引用变量和返回引用函数的命名前缀(适用于C++)

引用必须用'

r'

作前缀修饰。

classTest

void 

DoSomething(StatusInfo&

rStatus);

StatusInfo&

rStatus();

constStatusInfo&

Status()const;

//这里返回的是常量引用,所以不符合本规则

mrStatus;

1.10. 

全局变量的命名前缀(适用于C/C++)

全局变量总是以'

g(g_)'

作为前缀。

Logger 

g_Log;

Logger*g_pLog;

1.11. 

全局常量的命名(适用于C/C++)

全局常量全部大写,并以下划线'

分隔单词。

constintA_GLOBAL_CONSTANT=5;

1.12. 

静态变量的命名前缀(适用于C++)

静态变量以'

s'

staticStatusInfom_sStatus;

1.13. 

自定义类型(typedef)的命名(适用于C/C++)

类型定义名称指的是用typedef定义的名称。

类型定义名称使用与类名相同的规则,并使用Type作为后缀。

typedefuint16 

ModuleType;

typedefuint32 

SystemType;

1.14. 

宏定义的命名(适用于C/C++)

所有单词的字母都用大写,并使用下划线'

分隔.

#defineMAX(a,b)blah

#defineIS_ERR(err)blah

1.15. 

C函数的命名(适用于C/C++)

C++项目中,应尽量少用C函数。

C函数使用GNU规范,所有字母都使用小写,并用下划线'

some_bloody_function()

特别的,为了赚容C/C++,在必要的时候,在C++中应以下面的格式定义C函数:

extern“C”intsome_bloody_function();

或在C/C++中推荐使用下面的格式:

#ifdef__cplusplus__

extern“C”{

#endif

1.16. 

枚举的命名(适用于C/C++)

所有字母都大写,并用下划线'

作为单词分隔。

enumPinStateType

PIN_OFF,

PIN_ON

};

enum{STATE_ERR, 

STATE_OPEN,STATE_RUNNING,STATE_DYING};

2. 

排版规则

2.1.布局和模板

2.1.1. 

类的布局模板(适用于C++)

请使用下面的模板来创建一个新的类:

/** 

用一行来描述类

*

*#include"

XX.h"

<

BR>

*-llib

类的详细说明

*@seesomething

*/

#ifndef 

SORUTION_PROJECT_CLASSNAME_H

#define 

// 

在这里包含系统头文件

//

在这里包含项目头文件

在这里包含局部头文件

在这里放置前置引用

class 

XX

{

public:

类的生命周期控制函数,如构造和析构,以及状态机

/**

*Defaultconstructor.

*/

XX(void);

*Copyconstructor.

*

*@paramfromThevaluetocopytothisobject.

XX(const 

XX&

from);

*Destructor.

virtual~XX(void);

在这里放置类的运算操作符

*Assignmentoperator.

*@paramfromTHevaluetoassigntothisobject.

*@returnAreferencetothisobject.

XX&

operator=(XX&

from);

在这里放置类的操作 

在这里放置属性存取

在这里放置类的状态查询

protected:

private:

};

内联方法定义

外部引用

#endif 

定义的顺序是:

public,protected,private

要清楚public/protected/private都应该放置哪些东西

2.1.2. 

源文件格式(适用于C++)

#include 

"

//classimplemented

///////////////PUBLIC///////////////////////

//================= 

构造函数====================

XX:

XX()

}//XX

XX(const 

~XX()

}//~XX

//=============== 

操作符=========================

);

return 

*this;

}//=

//==============类的操作=====================

//==============属性存取=====================

//==============状态查询 

=====================

/////////////PROTECTED 

//////////////////

/////////////PRIVATE 

2.1.3. 

保护头文件不被重复包含(适用于C/C++)

应使用宏定义来保护头文件不被重复包含:

如果使用命名空间的时候,要把命名空间加到文件名前面:

SORUTION_PROJECT_NAMESPACE_CLASSNAME_H

#endif

2.1.4. 

方法和函数的布局(适用于C/C++)

对于有较多参数的函数的写法

如果参数较多,一行写不下,我们应该分成几行来写,并且每个参数都另起一行对齐:

int 

AnyMethod(

arg1, 

arg2,

arg3,

arg4);

AnyMethod( 

arg1 

 

arg2

arg3

2.2.缩进、制表符以及空格(适用于C/C++)

缩进的时候,每一层缩进3,4,或8个空格。

(推荐使用4个空格)

不要使用TAB,用空格,大多数编辑器可以用空格代替TAB。

TAB应固定4个空格,因为大多数编辑器都是这么设置的。

虽然没有规定缩进的层次,但是4至5层是合适的。

如果缩进的层次太多,你可能需要考虑是否进行代码重构了。

void

func()

if 

(somethingbad)

(anotherthingbad)

while 

(moreinput)

}

2.3.尽量使一行不要超过78个字母(适用于C/C++)

有许多编辑器屏幕只有78个字母宽

2.4.保证一行只写一条语句(适用于C/C++)

一行最多只写一条语句

一行只定义一个变量

不要象下面这样:

char**a,*x;

intwidth,height;

//widthandheightofimage

要象这样:

char**a=0;

//文档说明

char* 

x=0;

2.5.花括号{}规则(适用于C/C++)

2.5.1. 

花括号的位置

在关键字的下一行单独放置括号,并且与关键字对齐,如:

(condition) 

...

(condition)

2.5.2. 

什么时候应使用花括号

所有的if,while和do语句,要么用单行格式,要么使用花括号格式。

使用花括号格式:

if(1==somevalue)

somevalue=2;

单行格式:

if(1==somevalue)somevalue=2;

或下面这样(对于这种写法,建议使用花括号):

somevalue=2;

2.5.3. 

在花括号结束的位置加上注释

在花括号结束的位置加上注释是一个好习惯。

假如前后花括号距离很远,注释就能帮你理解它是如何对应的。

如:

while

(1)

(valid)

//ifvalid

else

//notvalid

//endforever

2.5.4. 

注意屏幕大小

一个语句块尽量不超过一个屏幕大小,这样,不要卷动屏幕就可以阅读代码。

2.6.圆括号()规则(适用于C/C++)

圆括号与关键字之间应放一个空格。

圆括号与函数名之间不要有空格。

Return语句不要使用圆括号。

if(condition)

while(condition)

strcpy(s,s1);

return1;

2.7.ifelse语句的格式(适用于C/C++)

布局

if(条件) 

//注释

elseif(条件) 

else 

条件格式

总是把常量放在等号或不等于号的左边:

if(6==errorNum)...

一个很重要的理由是,假如漏写一个等号,这种写法会产生一个编译错误,有助于马上发现问题。

比如:

if(errorNum==6)...

错写成:

if(errorNum=6)...//这是一个不容易发现的灾难

2.8.switch格式(适用于C/C++)

直通的case语句,应该放置一条注释说明这个case语句是直通到下一个case语句的。

总是要写default语句,不管是否是需要。

在case中需要定义变量的时候,应把所有代码放在语句块中。

switch 

(...)

case 

1:

继续执行case2

2:

v;

break;

default:

2.9.使用goto,continue,break和?

(适用于C/C++)

2.9.1. 

Goto

尽量避免使用Goto语句。

一个合理使用goto语句的场合是,当你需要从多层循环中跳出。

for 

(disaster)

goto 

error;

//跳出循环

...

error:

cleanupthemess

跳转的标号必须单独在一行的最左边。

Goto语句需要有相应的注释,说明它的用途。

2.9.2. 

ContinueandBreak

Continue和break实际上起到与goto一样的作用,因此,尽量少用为上。

并且,Continue与break最好不要连用。

2.9.3. 

?

用括号把条件表达式括起来。

不要在?

:

中写上过多的代码,操作表达式应尽可能简洁。

操作语句应分行写,除非它们能够简洁的放在一行当中。

(condition)?

funct1():

func2();

(condition)

longstatement

anotherlongstatement;

2.10. 

运算符号的规则(适用于C/C++)

一元操作符如(!

、~等等)应贴近操作对象。

if(!

IsOk)

return++v;

二元操作符如(+、*、%、==等等)应在前后留空格。

if(v1==v2)

returnv1*3;

++和--尽量使用前置运算。

在C++中,不管++i还是i++,总是++i更容易生成优化代码。

for(inti=0;

i<

10;

++i)

2.11. 

变量声明语句块(适用于C/C++)

变量应该是随用随声明,不要集中在函数前(有些C语言不支持,则不在此要求之列)。

特别是在for语句的循环变量,应只在for语句中定义。

声明语句块必须要对齐

类型,变量,等号和初始化值要分别对齐。

DWORD 

mDword;

DWORD* 

mpDword;

char* 

mpChar;

char 

mChar;

mDword 

0;

mpDword 

NULL;

mpChar 

mChar 

3. 

文档及注释

应当使用文档自动生成工具,来生成相关的程序文档。

3.1.文件或程序库的文档注释(适用于C/C++)

可以为整个文件编写文档。

/**@filefile.h

*Abrieffiledescription.

*Amoreelaboratedfiledescription.

3.2.类文档注释(适用于C/C++)

在类定义前面应加上类说明文档。

/**WindowsNT

@briefWindowsNiceTry.

@authorBillGates

@authorSeveralspeciesofsmallfurryanimalsgatheredtogether

ina

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1