C++编码规范(2)

上传人:飞****9 文档编号:145725871 上传时间:2020-09-22 格式:DOCX 页数:25 大小:481.47KB
返回 下载 相关 举报
C++编码规范(2)_第1页
第1页 / 共25页
C++编码规范(2)_第2页
第2页 / 共25页
C++编码规范(2)_第3页
第3页 / 共25页
C++编码规范(2)_第4页
第4页 / 共25页
C++编码规范(2)_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《C++编码规范(2)》由会员分享,可在线阅读,更多相关《C++编码规范(2)(25页珍藏版)》请在金锄头文库上搜索。

1、.1. 命名规则1.1. 起个合适的名字1.1.1.类的名称(适用于C+ )2 类的名称要能告诉我们,这个类是什么。因此,类的名称通常是名词。2 类的名字不需要告诉我们,它从哪个类继承而来的。2 有时候加个后缀是很有用的。比如类是一个代理(Agents) 时,起名叫DownloadAgent更能表达真实的意图。1.1.2.方法和函数的名称(适用于C/C+ )2 方法和函数通常都要执行某种行为,因此,名称要能清楚的说明它做什么:CheckForErrors()而不是 ErrorCheck(),DumpDataToFile()而不是 DataFile() 。 这样也可以很容易的区别函数和数据。2

2、函数名总以动词开头,后面跟随其它名称。这样看起来更自然些。2 可以加一些必要的后缀:Max 表示取最大值Cnt 表示当前的计数值Key 表示键值例如: RetryMax表示可接收的最大数,RetryCnt表示当前接收的数量。2 前缀也同样有用:Is 用于询问一些问题。只要看到Is 开头,就知道这是一个查询。Get 用于获取一个值。Set 用于设置一个值。例如: IsHitRetryLimit.1.1.3.含有度量单位的名称(适用于C/C+ )2 如果一个变量用于表示时间,重量或其它度量单位,应把度量单位添加到名称中,以便开发人员更早一步发现问题。例如:uint32 mTimeoutMsecs;

3、uint32 mMyWeightLbs;1.1.4.缩写名称不要全部大写(适用于C/C+ )2 无论是什么缩写名称,我们总以一个大写字母开头,后面跟随的字母全部用小写。;.例如:class FluidOz;/而不是 FluidOZclass NetworkAbcKey;/而不是 NetworkABCKey1.2. 类的命名(适用于C+ )2 用大写字母作为单词的分隔,每个单词的首字母大写,其它字母均小写。2 名字的第一个字母应大写2 不含有下划线(_)例如:class NameOneTwo;class Name;1.3. 类库(或程序库)命名(适用于 C/C+ )2 使用命名空间防止名字冲突。

4、2 如果编译器没有实现命名空间,需要用前缀来避名名字冲突,不过前缀不要过长(2 个字母比较好)。例如:John Johnson完成了一个数据结构的库,它可以使用JJ 作为库的前缀,所以类名就象下面这样:class JjLinkList1.4. 方法和函数的命名(适用于C+ )2 使用与类名相同的规则例如:class NameOneTwopublic:intDoIt();voidHandleError();1.5. 类属性的命名(适用于C+ );.2属性(通常是非公有数据成员)名字以字母m 开头。2在 m(m_) 后面,使用与类名相同的规则。2m(m_)总是位于其它修饰符(如表示指针的p )的前

5、面。例如:class NameOneTwopublic:intVarAbc();intErrorNumber();private:intmVarAbc;intmErrorNumber;String*mpName;1.6. 方法和函数参数的命名(适用于C+ )2 第一个字母必须小写。2 第一个字母后面的单词使用与类名相同的规则。例如:class NameOneTwopublic:intStartYourEngines(Engine&rSomeEngine,Engine&rAnotherEngine);1.7. 局部变量的命名(适用于C/C+ )2 所有字母都用小写2 使用下划线_ 作为单词的分隔

6、。例如:intNameOneTwo:HandleError(int errorNumber);.interror= OsErr();Timetime_of_error;ErrorProcessor error_processor;1.8. 指针变量的命名前缀(适用于C/C+ )2 指针变量多数情况应在前面加p 。2 星号 * 应靠近类型,而不是变量名。例如:String* pName=new String;特别的: String* pName, name;应分成两行来写:String* pName;String name;1.9. 引用变量和返回引用函数的命名前缀(适用于 C+ )2 引用必须

7、用r 作前缀修饰。例如:class Testpublic:voidDoSomething(StatusInfo&rStatus);StatusInfo&rStatus();constStatusInfo& Status() const; /这里返回的是常量引用,所以不符合本规则private:StatusInfo&mrStatus;1.10.全局变量的命名前缀(适用于C/C+ )2 全局变量总是以g(g_) 作为前缀。;.例如:Logger g_Log;Logger* g_pLog;1.11.全局常量的命名(适用于C/C+ )2 全局常量全部大写,并以下划线_ 分隔单词。例如:const in

8、tA_GLOBAL_CONSTANT = 5;1.12.静态变量的命名前缀(适用于C+ )2 静态变量以s 作为前缀。例如:class Testpublic:private:staticStatusInfo m_sStatus;1.13. 自定义类型( typedef )的命名(适用于 C/C+ )2类型定义名称指的是用typedef 定义的名称。2类型定义名称使用与类名相同的规则,并使用Type 作为后缀。例如:typedefuint16ModuleType;typedefuint32SystemType;1.14.宏定义的命名(适用于C/C+ )2 所有单词的字母都用大写,并使用下划线_

9、分隔 .例如:#define MAX(a,b) blah#define IS_ERR(err) blah1.15.C 函数的命名(适用于C/C+ );.2C+ 项目中,应尽量少用C 函数。2C 函数使用 GNU 规范,所有字母都使用小写,并用下划线_ 作为单词的分隔。例如:intsome_bloody_function()2 特别的,为了赚容C/C+ ,在必要的时候,在C+ 中应以下面的格式定义C 函数:extern“ C” int some_bloody_function();2 或在 C/C+ 中推荐使用下面的格式:#ifdef_cplusplus_extern“ C”#endifints

10、ome_bloody_function()#ifdef_cplusplus_#endif1.16.枚举的命名(适用于C/C+ )2 所有字母都大写,并用下划线_ 作为单词分隔。例如:enumPinStateTypePIN_OFF,PIN_ON;enum STATE_ERR, STATE_OPEN, STATE_RUNNING, STATE_DYING;2. 排版规则;.2.1. 布局和模板2.1.1.类的布局模板(适用于 C+ )2 请使用下面的模板来创建一个新的类:/* 用一行来描述类*#include XX.h *-llib* 类的详细说明* seesomething*/#ifndef S

11、ORUTION_PROJECT_CLASSNAME_H#define SORUTION_PROJECT_CLASSNAME_H/ 在这里包含系统头文件/ 在这里包含项目头文件/ 在这里包含局部头文件/ 在这里放置前置引用/class XX;.operator =(XX&from);.public :/ 类的生命周期控制函数,如构造和析构,以及状态机/*Default constructor.*/XX( void );/*Copy constructor.*param from The value to copy to this object.*/XX( const XX& from);/*Destructor.*/virtual XX(void );/ 在这里放置类的运算操作符/*Assignment operator.*param from THe value to assign to this object.*return A reference to this object.*/XX&/ 在这里放置类的操作/ 在这里放置属性存取;.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 规章制度

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号