开发工具:
文件大小: 145kb
下载次数: 0
上传时间: 2016-01-20
详细说明: C++编程规范 排版: 程序采用缩进风格编写,缩进的空格数为4个,不使用TAB键;程序块的分界符应个独占一行并且位于同一列,同时与引用它们的语句左对齐; if,for,do,while,case,switch,default等语句各自占一行,且if,for,do,while,case等语句的执行语句部分无论多少都要加{}; 相对独立的程序块之间、变量声明语句块之后必须加空格;较长的语句(〉80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操 作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读; 不允许把多个语句写在一行中,即一行只写一条语句;不允许把多个变量写在一行中,即一行之定义一个变量; 在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或前后加空格; 进行非对等操作时,如果是关系密切的立即操作符(如-〉)后不应加空格; 判断语句中常量/宏放在==的左边,变量放在==的右边; 访问权限的编译开关和控制关键字public/private/protected与上一级代码保持对齐,不缩进; 注释: 说明性文件头部应进行注释,注释必须列出:版权说明、生成日期、作者、内容说明、修改日志等; 源文件头部应进 行注释,列出:版权说明、生成日期、作者、模块目的/功能、主要函数、修改日志等; 修改代码同时修改相应的注释,以保证注释与代码的一致性,不再有用的注释要删除; 变量名、常量名、数据结构名(包括数组、结构、类、枚举等)如果不是充分自注释的,则必须加上注释; 较复杂的分支语句(条件分支、循环语句等)必须加上注释; 对于switch控制块中不含break的case语句,必须加上注释; 对于使用代码屏蔽警告的,必须加上注释,至少列出:屏蔽原因、批准人员、批准时间; 注释应与其描述的代码位置相近,对代码的注释通常放在其上方相邻位置,并与注释的代码采用相同的缩进,不可放在下面和语句中间,如放于上方 则需与其上面的代码用空行隔开; 对于变量名、常量名、数据结构子元素等单行语句,其注释语句可放在右边; 注释的内容要清楚、明了,含义准确,防止注释二义性; 注释中禁止使用缩写,除非已是业界通用或标准化的缩写; 远程序注释量必须达到20%以上; 命名: 标识符的命名必须清晰、明了,有明确含义; 命名中禁止使用缩写,除非已是业界通用或标准化的缩写; 禁止使用单个字符作为变量名(包括用于循环的临时变量),要使用有意义的单词; 除非必要,不要用数字或较奇怪的字符来定义标识符; 用正确的反义词组命名具有互斥意义的变量或相反动作的函数等; 除用于编译开关和防止头文件重复展开的宏外,禁止名字以下划线起始或结尾; 宏名字使用全大写的以下划线分隔的单词; 目录名,文件名全部采用小写,如果由多个单词构成,则单词之间采用下划线连接; 变量名采用名词或名词短语(除bool变量外):基本类型和容器类的变量名要使用小写的类型前缀,类实例变量前缀不作要求;如果由多个单词构成 ,则每个单词的首字母大写,不用下划线分隔; 名字空间名,类名使用首字母大写的名词,如果由多个单词构成,则每个单词的首字母大写,不使用空格或下划线之类的进行分隔; 文件名全部小写,并与其提供的主要类或名字空间的名称相同; 函数名使用全小写的动词,或小写的动词加首字母大写的名词的动宾结构; 类成员变量应使用m_前缀; 全局变量应使用g_前缀; 用作接口的类成员变量应使用与函数名相同的命名方式; 函数: 明确函数功能,精确(而不是近似)地实现函数设计; 一个函数仅完成一件功能,禁止设计多用途面面俱到的函数; 为简单功能编写函数,以实现程序的自解释性; 禁止编写依赖于其它函数内部实现的函数; 编写可重入函数是的注意: 不用静态数据;不调用任何不可重入函数;不返回指向全局数据的指针,所有数据都由函数的调用者提供; 避免访问全局变量,如果必须访问全局变量,需要利用互斥信号量等来保护全局变量; 函数的功能应该是可以预测的,也就是只要输入数据相同就应产生同样的输出; 减少函数本身或函数间的递归调用; 不要在函数调用处的参数列表里发生运算; 对所调用函数的错误返回码要仔细、全面地处理; 对于外部接口函数,应对参数正确性进行检查及处理; 内部函数应对自身的所有输入进行ASSERT检查,包括自身用到的所有非局部变量; 函数结构要清晰:变量定义,参数检查,处理,清理,返回,都必须有空行分隔开; 变量必须在定义时同时初始化; 禁止定义超过1K bytes的单个函数局部变量,单个函数的局部变量所占空间不能超过2K bytes; 函数规模不能大于150行; 设计高扇入、合理扇出(小于7)的函数; 函数调用深度不能大于5; 函数参数个数应小于等于5个; 禁止编写变参函数; 避免函数中不必要语句,防止程序中的垃圾代码; 检查函数所有非参数输入的有效性,如数据文件、公共变量等; 函数的返回值要清楚、明了,让使用者不容易忽视错误情况; if语句尽量加上else分支,对没有else分支的语句要小心对待; switch语句必须有default分支; 重载运算符要保持自然语义; 如果函数不改变状态,则必须声明为const函数; 基本数据类型的输入参数,优先传值; 非基本类型的输入参数,优先传const引用; 输出参数,优先传引用; 宏: 用宏定义表达式时,要使用完备的括号; 使用宏时,不允许参数发生变化; 尽量减少宏的使用,使用const来定义常量,使用模板函数或内联函数来取代函数型宏; 模板: 不要使用全局变量,如果确有需要,可以使用单件模式; 独立编译模块的外部接口禁止返回申请的内存; 独立编译模块的外部接口禁止抛出异常; 与外部模块通信时使用低级数据类型,模块内部接口通信应使用高级数据类型; 头文件: 头文件必须自足,也即此头文件已包含了所有其依赖的文件; 禁止包含不需要的文件; 头文件必须有防止重复展开的宏; 头文件中不允许定义有链接的实体; 名字空间: 类型和非成员函数接口如果是协同工作的则放在同一个名字空间中,否则放在不同的名字空间中; 禁止不同名字空间的对象有初始化依赖关系; 禁止在头文件中使用using namespace 指令; 禁止在#include之前使用using namespace 指令; 类: 明确的定义类的类型:数据值类,基类; 禁止继承没有设计为基类的类; 多用组合,少用继承; 基类析构函数只能是公用虚函数或保护非虚函数; 一个类一个清晰的目的,不要写面面俱到的巨大的类; 在构造函数中初始化所有数据成员; 在构造函数中申请资源,在析构函数中释放资源; 将数据成员设为私有,C风格的结构体不受此限制; 禁止返回内部数据指针; 禁止在构造和析构函数中调用虚函数; 如果提供了析构函数则同时提供拷贝函数或显式禁止拷贝函数; 显式地启用或者禁止复制; ...展开收缩
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.