软件编码规范文档

上传人:re****.1 文档编号:497836987 上传时间:2023-11-19 格式:DOC 页数:19 大小:157KB
返回 下载 相关 举报
软件编码规范文档_第1页
第1页 / 共19页
软件编码规范文档_第2页
第2页 / 共19页
软件编码规范文档_第3页
第3页 / 共19页
软件编码规范文档_第4页
第4页 / 共19页
软件编码规范文档_第5页
第5页 / 共19页
点击查看更多>>
资源描述

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

1、C+设计编码规范V1.00(试用版)设备开发部 黄焕斌目录重要提示4背景41文件组织规则41.1命名41.2目录41.3预处理41.4注释52代码组织规则62.1空行62.2换行62.3空格62.4对齐72.5就近原则72.6精简原则73命名规则93.1自注释93.2变量93.3函数93.4类型103.5宏103.6常量104设计规则114.1识别类和函数114.2构造函数114.3封装性124.4函数参数124.5函数返回值134.6契约134.7规模144.8名字空间144.9类型转换144.10常量144.11内联144.12静态变量144.13编译依赖154.14可重入155内存管理规

2、则165.1模块化165.2静态分配165.3new/delete165.4有效性165.5正确释放165.6拷贝166注释规则176.1有效性176.2普通注释176.3Doxygen注释176.4定义176.5申明186.6模块187维护规则197.1消除警告197.2代码修改197.3标本兼治19参考资料20重要提示本规范中的示例代码都在表格框中显示,绿色的表格框表示正确的示例代码,红色的表格框表示不建议的示例代码。背景C+是大华设备软件和平台软件开发的主要软件,在新的软件框架里,两种平台的组件甚至是共用的。统一的代码风格,良好的设计风格,有利于代码的实现和阅读,有利于减少代码错误和提高

3、代码效率,能有效地促进技术的交流和发展。常见的代码规范都异常冗长,调调框框太多。本规范力求以简明的内容,概括一些重要的规则,将相似的规则进行提炼集中描述,并提供对照的示例代码加深理解。规范的使用者花半个小时左右,就可以熟悉整个规范。所有大华基于新软件框架的底层组件,业务组件,应用组件都必须遵守此规范。例外本规范是强制要求,不过有些情况例外:与第三方库有关的代码:比如stl,boost,json等等,使用、移植这些库时,相关的代码可以按照这些库的规范。Windows代码:主要指基于公共软件框架,同时使用了非公共组件框架内的其他API接口的组件,可以继续保留Windows的规范。1 文件组织规则

4、1.1 命名所有的目录和文件名使用大写字母开头的单词组合,目录名单词之间可以用空格分开。引用文件名时要严格区分大小写。与操作系统关系密切的工程的命名可以参考操作系统的规则。Timer.cpp/源文件Timer.h/头文件Font.bin/资源文件Config1/配置文件1.2 目录一个大的工程是由多个组件或模块组成的,对于每个组件或模块,其代码应集中管理,并具备完整的设计文档和单元测试代码,用子目录分类存放。目录或文件说明Bin测试程序目录Doc设计文档目录Include依赖的组件头文件目录与本组件的外部接口头文件目录,映射到其他地址Lib不同平台生成的库和依赖的库文件目录Makefile.C

5、onfigsMakefile的不同平台的配置文件目录Src 源文件,内部头文件Test单元测试代码MakefileallRules.mkMakefile文件,一次性编译Makefile.Configs目录下所有配置对应的库,测试程序1.3 预处理 为了防止头文件被重复引用,使用ifndef/define/endif结构产生预处理块。预处理宏中的单词应与文件名基本一致。/文件名为Guard.h#ifndef _GUARD_H_#define _GUARD_H_/Guard类的定义.#endif /_GUARD_H_1.4 注释 源文件和头文件的头部都应进行注释,列出svn文件ID,版权申明,文件

6、描述(说明是什么模块或什么类对应的文件),修改记录(修改时间、svn作者、修改内容),可使用va模板。对于新加入svn的文件,应该其文件属性的svn属性列表中加入(svn:keywords, Id)属性。不要和文件中的类或模块的注释混淆。/ $Id$“/ Copyright (c)1992-2007, ZheJiang Dahua Technology Stock CO.LTD./ All Rights Reserved./Description:/Revisions:Year-Month-Day SVN-Author Modification/2 代码组织规则 2.1 空行 类、结构、联合、

7、函数、枚举等定义结束后,应加空行。类定义内部相关的成员变量或操作之间不加空行,其他地方应加空行。函数体内,逻揖上密切相关的语句之间不加空行,其它地方应加空行。源文件和头文件末尾保留一个空行。class A;class B;2.2 换行 每行代码只写一条语句。拆分复杂的复合表达式。代码行长度控制在80左右。长表达式在低优先级操作符处拆分成新行,操作符放在新行之首。 if (loadFile(m_customFilePath.c_str(), m_stream)& reader.parse(m_stream, m_configAll)& m_configAllGroups.size() = 1&

8、m_configAllUsers.size() = 1)infof(CUserManager:SetDefault() apply custom config.n);2.3 空格 ,之后要留空格。如果;不是一行的结束符号,其后要留空格。二目或三目操作符前后留空格。但“”、“.”、“-”这类操作符和作用于分辨符“:”前后不加空格。修饰符*和紧靠变量名,仅在前面加空格。char *name;int *x, y;/ 此处y不会被误解为指针for(int i = 0; i N; i+)2.4 对齐 程序的分界符和应独占一行并且位于同一列,同时与引用它们的语句左对齐。 之内的代码块使用TAB缩进并对齐,

9、换行后的代码块使用TAB缩进并对齐。代码前的注释应和所注释的代码对齐。/comment of foovoid foo()do something2.5 就近原则 较为紧密的代码应尽可能相邻。变量应在在定义的同时初始化。C+函数中将局部变量的定义放在要使用它的代码前最近处。将类的public接口申明放在类定义的最前面。void foo()int a = 0;a+;int b = 0;b+;2.6 精简原则 DRY(Dont Repeat Yourself)系统中的每一项知识都需具有单一的表示。KISS(Keep It Simple Stupid) 保持尽量简单。类中多次使用定义的很长的类型,应在

10、类定义中对该类型进行更简洁自定义。访问一个变量的表达式太长,应定义一个临时的指针或引用来替换它。函数中多次调用返回结果不变的其他函数,应使用临时变量保存结果。函数中多次引用单件,应使用临时变量甚至类的成员变量来保存单件的引用或指针。将if/else/return的组合改为return条件表达式组合。Json:Value& users = m_configAllUsers;for(uint i = pos; i draw(); /成员函数3.4 类型 可直接使用bool,char等内建类型,其他使用stdint.h定义的类型。算术自定义类型,类,结构,联合,枚举类型统一使用大写字母开头的单词组合。class类型的命名前加大写字母C;template class类型的命名前加大写字母T;接口类的命名前加大写字母I。在类中嵌套的定义有具体意义的类型,是代码更易读。 typedef int Distance;union Address;enum Mode;struct User;class CPacket;template class T, class A = std:allocator class TCircularQueue;class IDevVideoEnc;3.5 宏 全部使用大写字母,单词之间用下划线分开。给代码控制宏命名加上前缀,来分类不同用途的宏。以上都是指

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

当前位置:首页 > 幼儿/小学教育 > 小学课件

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