logo资料库

C++编码规范.docx

第1页 / 共24页
第2页 / 共24页
第3页 / 共24页
第4页 / 共24页
第5页 / 共24页
第6页 / 共24页
第7页 / 共24页
第8页 / 共24页
资料共24页,剩余部分请下载后查看
C/C++语言编码规范
1.    命名规则
1.1. 起个合适的名字
1.1.1.    类的名称
1.1.2.    方法和函数的名称
1.1.3.   含有度量单位的名称
1.1.4.    缩写名称不要全部大写
1.2.类的命名
1.3.类库(或程序库)命名
1.4.方法和函数的命名
1.5.类属性的命名
1.6.方法和函数参数的命名
1.7.局部变量的命名
1.8.指针变量的命名前缀
1.9.引用变量和返回引用函数的命名前缀
1.10.   全局变量的命名前缀
1.11.   全局常量的命名
1.12.   静态变量的命名前缀
1.13.   自定义类型(typedef)的命名
1.14.   宏定义的命名
1.15.   C 函数的命名
1.16.   枚举的命名
2.    排版规则
2.1. 布局和模板
2.1.1.    类的布局模板
2.1.2.   源文件格式
2.1.3.    保护头文件不被重复包含
2.1.4.    方法和函数的布局
2.2. 缩进、制表符以及空格
2.3. 尽量使一行不要超过78个字母
2.4. 保证一行只写一条语句
2.5. 花括号 {} 规则
2.5.1.    花括号的位置
2.5.2.    什么时候应使用花括号
2.5.3.    在花括号结束的位置加上注释
2.5.4.    注意屏幕大小
2.6.圆括号 () 规则
2.7.if else 语句的格式
2.8.switch 格式
2.9. 使用goto,continue,break 和 ?:
2.9.1.    Goto
2.9.2.    Continue and Break
2.9.3.    ?:
2.10.   运算符号的规则
2.11.    变量声明语句块
3.    文档及注释
3.1. 文件或程序库的文档注释
3.2. 类文档注释
3.3. 函数文档注释
3.4. Include 语句注释
3.5.语句块注释
4.    编码要求
4.1. 不要忽略编译器的警告
4.2. 应使用源代码管理器
4.3. 固有的类方法成员
4.4. 使用命名空间
4.5. 初始化所有的变量
4.6. 保持函数短小精悍
4.7.对空语句进行注释
4.8. 不要用if语句的默认方法测试非零值
4.9.布尔类型
4.10.   避免在语句中内含赋值
4.11.   正确的使用Const
4.12.    不要在头文件定义数据
4.13.   不要直接使用数字
4.14.    宏
5. SVN使用规范
5.1. 先更新,再提交
5.2. 一个提交尽量对应一个逻辑问题
5.3. 多提交
5.4. 不要提交不能通过编译的代码
5.5. 每次提交必须书写明晰的标注
5.6. 对于不同类型的提交需要使用不同类型前缀作为标记
5.7. 提交时注意不要提交本地自动生成的文件
5.8. 不要提交自己不明白的代码
5.9. 慎用锁定功能
5.10. 使用TAG功能为release版本做标记
C/C++语言编码规范
目录 C/C++语言编码规范.................................................................................................................. 1 1. 命名规则 ............................................................................................................................ 4 1.1. 起个合适的名字 ........................................................................................................4 1.1.1. 类的名称 ...................................................................................................... 4 1.1.2. 方法和函数的名称 ......................................................................................4 1.1.3. 含有度量单位的名称 ....................................................................................4 1.1.4. 缩写名称不要全部大写 ..............................................................................4 1.2.类的命名 ...................................................................................................................... 4 1.3.类库(或程序库)命名 ..............................................................................................5 1.4.方法和函数的命名 ......................................................................................................5 1.5.类属性的命名 ..............................................................................................................5 1.6.方法和函数参数的命名 ..............................................................................................5 1.7.局部变量的命名 ..........................................................................................................6 1.8.指针变量的命名前缀 ..................................................................................................6 1.9.引用变量和返回引用函数的命名前缀 ......................................................................6 1.10. 全局变量的命名前缀 ............................................................................................. 6 1.11. 全局常量的命名 ..................................................................................................... 7 1.12. 静态变量的命名前缀 ............................................................................................. 7 1.13. 自定义类型(typedef)的命名 ............................................................................ 7 1.14. 宏定义的命名 ......................................................................................................... 7 1.15. C 函数的命名......................................................................................................... 7 1.16. 枚举的命名 ............................................................................................................. 8 2. 排版规则 ............................................................................................................................ 8 2.1. 布局和模板 ................................................................................................................8 2.1.1. 类的布局模板 .............................................................................................. 8 2.1.2. 源文件格式 .................................................................................................. 10 2.1.3. 保护头文件不被重复包含........................................................................11 2.1.4. 方法和函数的布局 ....................................................................................11 2.2. 缩进、制表符以及空格 ..........................................................................................11 2.3. 尽量使一行不要超过 78 个字母 ............................................................................12 2.4. 保证一行只写一条语句 ..........................................................................................12 2.5. 花括号 {} 规则 ....................................................................................................... 12 2.5.1. 花括号的位置 ............................................................................................12 2.5.2. 什么时候应使用花括号 ....................................................................................12 2.5.3. 在花括号结束的位置加上注释................................................................13 2.5.4. 注意屏幕大小 ............................................................................................13 2.6.圆括号 () 规则 ................................................................................................. 13 2.7.if else 语句的格式.................................................................................................... 13 2.8.switch 格式 ................................................................................................................14 2.9. 使用 goto,continue,break 和 ?: .............................................................................14 2.9.1. Goto............................................................................................................ 14 2.9.2. Continue and Break.................................................................................... 15
?: ................................................................................................................. 15 2.10. 运算符号的规则 ................................................................................................... 15 2.11. 变量声明语句块................................................................................................. 15 3. 文档及注释...................................................................................................................... 16 3.1. 文件或程序库的文档注释 ......................................................................................16 3.2. 类文档注释 ..............................................................................................................16 3.3. 函数文档注释 ..........................................................................................................17 3.4. Include 语句注释..................................................................................................... 18 3.5.语句块注释 ................................................................................................................18 4. 编码要求 .......................................................................................................................... 18 4.1. 不要忽略编译器的警告 ..........................................................................................18 4.2. 应使用源代码管理器 ..............................................................................................18 4.3. 固有的类方法成员 ..................................................................................................18 4.4. 使用命名空间 ..........................................................................................................19 4.5. 初始化所有的变量 ..................................................................................................19 4.6. 保持函数短小精悍 ..................................................................................................19 4.7.对空语句进行注释 ....................................................................................................19 4.8. 不要用 if 语句的默认方法测试非零值................................................................. 19 4.9.布尔类型 ....................................................................................................................20 4.10. 避免在语句中内含赋值 .......................................................................................20 4.11. 正确的使用 Const.................................................................................................20 4.12. 不要在头文件定义数据 .....................................................................................20 4.13. 不要直接使用数字 ............................................................................................... 21 4.14. 宏......................................................................................................................... 21 5. SVN 使用规范 .......................................................................................................................22 2.9.3. 5.1. 先更新,再提交 ......................................................................................................22 5.2. 一个提交尽量对应一个逻辑问题 ..........................................................................22 5.3. 多提交 ......................................................................................................................22 5.4. 不要提交不能通过编译的代码 ..............................................................................23 5.5. 每次提交必须书写明晰的标注 ..............................................................................23 5.6. 对于不同类型的提交需要使用不同类型前缀作为标记 ..................................... 23 5.7. 提交时注意不要提交本地自动生成的文件 ......................................................... 23 5.8. 不要提交自己不明白的代码 ..................................................................................23 5.9. 慎用锁定功能 ..........................................................................................................23 5.10. 使用 TAG 功能为 release 版本做标记................................................................. 24
1. 命名规则 1.1. 起个合适的名字 1.1.1. 类的名称 类的名称要能告诉我们,这个类是什么。因此,类的名称通常是名词。 类的名字不需要告诉我们,它从哪个类继承而来的。 有时候加个后缀是很有用的。比如类是一个代理(Agents)时,起名叫 DownloadAgent 更 能表达真实的意图。 1.1.2. 方法和函数的名称 方 法 和 函 数 通 常 都 要 执 行 某 种 行 为 , 因 此 , 名 称 要 能 清 楚 的 说 明 它 做 什 么 : CheckForErrors() 而不是 ErrorCheck(),DumpDataToFile() 而不是 DataFile()。 这样也可以很容 易的区别函数和数据。 函数名总以动词开头,后面跟随其它名称。这样看起来更自然些。 可以加一些必要的后缀: Max – 表示取最大值 Cnt – 表示当前的计数值 Key – 表示键值 例如:RetryMax 表示可接收的最大数,RetryCnt 表示当前接收的数量。 前缀也同样有用: Is – 用于询问一些问题。只要看到 Is 开头,就知道这是一个查询。 Get – 用于获取一个值。 Set – 用于设置一个值。 例如:IsHitRetryLimit. 1.1.3. 含有度量单位的名称 如果一个变量用于表示时间,重量或其它度量单位,应把度量单位添加到名称中,以便 开发人员更早一步发现问题。 例如: uint32 mTimeoutMsecs; uint32 mMyWeightLbs; 1.1.4. 缩写名称不要全部大写 无论是什么缩写名称,我们总以一个大写字母开头,后面跟随的字母全部用小写。 例如: class FluidOz; class NetworkAbcKey; 1.2.类的命名 用大写字母作为单词的分隔,每个单词的首字母大写,其它字母均小写。 名字的第一个字母应大写 不含有下划线 ('_') 例如: // 而不是 NetworkABCKey // 而不是 FluidOZ class NameOneTwo;
class Name; 1.3.类库(或程序库)命名 使用命名空间防止名字冲突。 如果编译器没有实现命名空间,需要用前缀来避名名字冲突,不过前缀不要过长(2 个 字母比较好)。 例如: John Johnson 完成了一个数据结构的库,它可以使用 JJ 作为库的前缀,所以类名就象 下面这样: class JjLinkList { } 1.4.方法和函数的命名 使用与类名相同的规则 例如: class NameOneTwo { public: DoIt(); int void HandleError(); } 1.5.类属性的命名 属性(通常是非公有数据成员)名字以字母'm'开头。 在 'm(m_)' 后面,使用与类名相同的规则。 'm(m_)' 总是位于其它修饰符(如表示指针的 'p')的前面。 例如: class NameOneTwo { public: int int VarAbc(); ErrorNumber(); private: int int String* mVarAbc; mErrorNumber; mpName; } 1.6.方法和函数参数的命名 第一个字母必须小写。 第一个字母后面的单词使用与类名相同的规则。 例如: class NameOneTwo { public:
int StartYourEngines( Engine&rSomeEngine, Engine&rAnotherEngine); } 1.7.局部变量的命名 所有字母都用小写 使用下划线 '_' 作为单词的分隔。 例如: int NameOneTwo::HandleError(int errorNumber) { error= OsErr(); time_of_error; int Time ErrorProcessor error_processor; } 1.8.指针变量的命名前缀 指针变量多数情况应在前面加 'p'。 星号 '*' 应靠近类型,而不是变量名。 例如: String* pName=new String; 特别的:String* pName, name; 应分成两行来写: String* pName; String name; 1.9.引用变量和返回引用函数的命名前缀 引用必须用 'r'作前缀修饰。 例如: class Test { public: void DoSomething(StatusInfo&rStatus); StatusInfo& constStatusInfo& Status() const; // 这里返回的是常量引用,所以不符合本规则 rStatus(); mrStatus; private: StatusInfo& } 1.10. 全局变量的命名前缀 全局变量总是以 'g(g_)' 作为前缀。 例如: Logger g_Log;
Logger* g_pLog; 1.11. 全局常量的命名 全局常量全部大写,并以下划线 '_' 分隔单词。 例如: const intA_GLOBAL_CONSTANT = 5; 1.12. 静态变量的命名前缀 静态变量以 's' 作为前缀。 例如: class Test { public: private: staticStatusInfo m_sStatus; } 1.13. 自定义类型(typedef)的命名 类型定义名称指的是用 typedef 定义的名称。 类型定义名称使用与类名相同的规则,并使用 Type 作为后缀。 例如: typedefuint16 ModuleType; typedefuint32 SystemType; 1.14. 宏定义的命名 所有单词的字母都用大写,并使用下划线 '_' 分隔. 例如: #define MAX(a,b) blah #define IS_ERR(err) blah 1.15. C 函数的命名 C++项目中,应尽量少用 C 函数。 C 函数使用 GNU 规范,所有字母都使用小写,并用下划线 '_' 作为单词的分隔。 例如: int some_bloody_function() { } 特别的,为了赚容 C/C++,在必要的时候,在 C++中应以下面的格式定义 C 函数: extern “C” int some_bloody_function(); 或在 C/C++中推荐使用下面的格式: #ifdef__cplusplus__ extern “C”{ #endif Int some_bloody_function() { }
#ifdef__cplusplus__ } #endif 1.16. 枚举的命名 所有字母都大写,并用下划线 '_' 作为单词分隔。 例如: enumPinStateType { PIN_OFF, PIN_ON }; enum { STATE_ERR, STATE_OPEN, STATE_RUNNING, STATE_DYING}; 2. 排版规则 2.1. 布局和模板 2.1.1. 类的布局模板 请使用下面的模板来创建一个新的类: /** * 用一行来描述类 * *#include "XX.h"
*-llib * * 类的详细说明 * * @seesomething */ #ifndef SORUTION_PROJECT_CLASSNAME_H #define SORUTION_PROJECT_CLASSNAME_H // 在这里包含系统头文件 // // 在这里包含项目头文件 // // 在这里包含局部头文件 // // 在这里放置前置引用 //
分享到:
收藏