《C++软件编程规范》由会员分享,可在线阅读,更多相关《C++软件编程规范(46页珍藏版)》请在金锄头文库上搜索。
1、1C+软件编程规范21. 基本原则基本原则 模块化设计原则:减小模块之间的耦合度。即要对模块进行解耦。如何达到模块 之间的耦合度最小,关键是设计模块之间的接口;一个模块实现独立的,通用的, 一定原子性的功能;模块实现代码与下层支撑层之间采用标准接口,保证代码的 可移植性。 开发的软件要有可读性和可维护性。首先是为人编写程序,其次才是计算机,要 考虑到产品的开发,测试,生产,用户使用,版本升级和后期维护等长期过程。 编码格式要遵守文件模板 尽量保证底层源码的完整性 尽量不要改变代码的风格,坚持代码的最初风格 保证软件系统的稳定性,易读性,可修改性,可扩充性,可重用性和可移植性 不必改变以前代码风
2、格以适应新的风格 鼓励多加注释 在代码中避免使用 tab,而用空格代替 根据不同的功能来创建源文件 源文件中函数的顺序要符合逻辑 函数本身不要太大,控制在 1 到 2 页的范围 保持代码的简明清晰,避免过分的编程技巧 使用 C 语言的代码要尽可能遵循 ANSI C 标准 编程首先要考虑代码的正确性、健壮性、可维护性、可移植性等质量因素,最后 才考虑程序的效率和资源占用 避免或者少用全局变量,过多地使用全局变量,会导致模块间的紧耦合,违反模 块化的要求 尽量避免使用 GOTO 语句 尽可能重用和修正老的代码 2. 设计原则设计原则 当一个模块改变时不应该影响到其它模块的实现 确定代码能否在不同的
3、平台上运行 如果代码中存在条件编译,考虑去除这些条件时的情况 尽量减少程序对工具和硬件的依赖 注意代码的易测性 尽量减少代码的复杂度 3. 布局布局 程序布局的目的是显示出程序良好的逻辑结构,提高程序的准确性、连续性、可读性、 可维护性。更重要的是,统一的程序布局和编程风格,有助于提高整个项目的开发质量, 提高开发效率,降低开发成本。同时,对于普通程序员来说,养成良好的编程习惯有助于 提高自己的编程水平,提高编程效率。因此,统一的、良好的程序布局和编程风格不仅仅 是个人主观美学上的或是形式上的问题,而且会涉及到产品质量,涉及到个人编程能力的 提高,必须引起大家重视。 3.1. 文件布局文件布局
4、说明:说明:以下内容如果某些节不需要,可以忽略。但是其它节要保持该次序。 头文件布局:文件头(参见“注释”一节) #ifndef 文件名_H(全大写) #define 文件名_H 其它条件编译选项#include(依次为标准库头文件、非标准库头文件) 常量定义【规则 2-1-1】遵循统一的布局顺序来书写头文件。3全局宏全局数据类型类定义 模板(template) (包括 C+中的类模板和函数模板) 全局函数原型 #endif说明:说明:以下内容如果某些节不需要,可以忽略。但是其它节要保持该次序。 实现文件布局:文件头(参见“注释”一节)#include(依次为标准库头文件、非标准库头文件)常量
5、定义文件内部使用的宏文件内部使用的数据类型 全局变量 本地变量(即静态全局变量)局部函数原型 类的实现全局函数 局部函数正例:正例: / * 数据类型定义 * /typedef unsigned char BOOLEAN;/* 函数原型 */int DoSomething(void);说明:说明:可以通过宏定义来避免重复包含。 正例正例: #ifndef MODULE_H#define MODULE_H文件体#endif正例正例: #include #include “heads.h”说明:说明: 类的定义(在定义文件中)按如下顺序书写:【规则 2-1-2】遵循统一的布局顺序来书写实现文件。【
6、规则 2-1-3】使用注释块分离上面定义的节。【规则 2-1-4】头文件必须要避免重复包含。【规则 2-1-5】包含标准库头文件用尖括号 ,包含非标准库头文件用双引号 “ ”。【规则 2-1-6】遵循统一的顺序书写类的定义及实现。4公有属性公有函数保护属性保护函数私有属性私有函数类的实现(在实现文件中)按如下顺序书写:构造函数 析构函数 公有函数 保护函数 私有函数3.2. 基本格式基本格式说明:说明:包括空格在内不超过 80 列。说明:说明:这样可以防止书写失误,也易于阅读。 正例:正例: if (varible1 ”这类操作符前后不加空格。7aiNumberi = 5; tBox.dWid
7、th tBox-dWidth 正例正例: fValue = fOldValue; fTotal + fValue iNumber += 2;说明:说明:if、for、while 等关键字之后应留一个空格再跟左括号(,以突出关键字。说明:说明:函数名后紧跟左括号(,以与关键字区别。正例:正例: 例子中的 凵凵 代表空格。 for 凵凵(i 凵凵=凵凵 0;凵凵 i 凵凵 # # SERVICE: # Describe the service provided by this script # # DESCRIPTION: # Describe how this script operates a
8、nd how to use it # # PUBLIC CLASSES AND FUNCTIONS # If this script exports functions or data, describe them and enumerate them #= =#= = # Use / Require #= =#= = # Use / Require #= =#= = # Global Constants #= =#= = # FUNCTION #【规则 2-5-2】函数声明时,类型与名称不允许分行书写。9# DESCRIPTION: # # DEPENDENCIES # # RETURN V
9、ALUE(s) # # SIDE EFFECTS # #= =sub test1 my($j,$I);# Your Code Here # END test1#= = # SCRIPT BEGIN # DESCRIPTION # # SIDE EFFECTS # #= =# Your primary script here#= = # SCRIPT END #= =#= = # EDIT HISTORY FOR FILE # # $Workfile: $ # $Archive: $ # $Revision: $ # $Date: $ # $Modtime: $ #= = 4. 注释注释 注释有
10、助于理解代码,有效的注释是指在代码的功能、意图层次上进行注释,提供有 用、额外的信息,而不是代码表面意义的简单重复。【规则 3-1】C 语言的注释符为“/* */”。C+语言中,多行注释采用“/* */”,单行注释 采用“/ ”。10说明:说明:注释的原则是有助于对程序的阅读理解,注释不宜太多也不能太少,注释语言必须 准确、易懂、简洁。有效的注释是指在代码的功能、意图层次上进行注释,提供有 用、额外的信息。说明:说明:对于特殊要求的可以使用英文注释,如工具不支持中文或国际化版本时。说明:说明:注释必须列出:版权信息、文件标识、内容摘要、版本号、作者、完成日期、修改 信息等。 正例:正例: 下面
11、是文件头部的中文注释: /* * 版权所有 (C)2009, 扬讯科技。 * * 文件名称: / 文件名 * 内容摘要: / 简要描述本文件的内容,包括主要模块、函数及其功能的说明 * 其它说明: / 其它内容的说明 * 当前版本: / 输入当前版本 * 作 者: / 输入作者名字及部门 * 完成日期: / 输入完成日期,例:2000年2月25日 * * 修改记录1:/ 修改历史记录,包括修改日期、修改者及修改内容 * 修改日期: * 版 本 号: * 修 改 人: * 修改内容: * 修改记录2: */下面是文件头部的英文注释: /* * Copyright (C) 2001, ZTE Corporation. * * File Name: / 文件名 (注释对