文档介绍:C++设计编码规
(试用版)
设备开发部 黄焕斌
目录
重要提示4
背景4
1文件组织规则4
2代码组织规则6
3命名规则9
4设计规则11
5存管理规则16
6注释规则17
7维护规则19
参考资料20
重要提示
本规中的示例代码都在表格框中显示,绿色的表格框表示正确的示例代码,红色的表格框表示不建议的示例代码。
背景
C++是大华设备软件和平台软件开发的主要软件,在新的软件框架里,两种平台的组件甚至是共用的。统一的代码风格,良好的设计风格,有利于代码的实现和阅读,有利于减少代码错误和提高代码效率,能有效地促进技术的交流和发展。
常见的代码规都异常冗长,调调框框太多。本规力求以简明的容,概括一些重要的规则,将相似的规则进行提炼集中描述,并提供对照的示例代码加深理解。规的使用者花半个小时左右,就可以熟悉整个规。
所有大华基于新软件框架的底层组件,业务组件,应用组件都必须遵守此规。
例外
本规是强制要求,不过有些情况例外:
与第三方库有关的代码:比如stl,boost,json等等,使用、移植这些库时,相关的代码可以按照这些库的规。
Windows代码:主要指基于公共软件框架,同时使用了非公共组件框架的其他API接口的组件,可以继续保留Windows的规。
文件组织规则
命名
所有的目录和文件名使用大写字母开头的单词组合,目录词之间可以用空格分开。
引用文件名时要严格区分大小写。
与操作系统关系密切的工程的命名可以参考操作系统的规则。
//源文件
//头文件
//资源文件
Config1 //配置文件
目录
一个大的工程是由多个组件或模块组成的,对于每个组件或模块,其代码应集中管理,并具备完整的设计文档和单元测试代码,用子目录分类存放。
目录或文件
说明
Bin
测试程序目录
Doc
设计文档目录
Include
依赖的组件头文件目录与本组件的外部接口头文件目录,映射到其他地址
Lib
不同平台生成的库和依赖的库文件目录
Makefile的不同平台的配置文件目录
Src
源文件,部头文件
Test
单元测试代码
Makefile
Makefile文件,,测试程序
预处理
为了防止头文件被重复引用,使用ifndef/define/endif结构产生预处理块。
预处理宏中的单词应与文件名基本一致。
//
#ifndef __GUARD_H__
#define __GUARD_H__
//Guard类的定义...
#endif //__GUARD_H__
注释
源文件和头文件的头部都应进行注释,列出svn文件ID,申明,文件描述(说明是什么模块或什么类对应的文件),修改记录(修改时间、svn作者、修改容),可使用va模板。
对于新加入svn的文件,应该其文件属性的svn属性列表中加入(svn:keywords, Id)属性。
不要和文件中的类或模块的注释混淆。
//
// "$Id$“
//
// Copyright (c)1992-2007, ZheJiang Dahua Technology Stock .
// All Rights Reserved.
//
// Description:
// Revisions: Year