文档库 最新最全的文档下载
当前位置:文档库 › 腾讯编码规范

腾讯编码规范

腾讯编码规范
腾讯编码规范

腾讯集团管理标准

GL/YF 013-2007V1.0-L1

Java编码规范

2007-09-11发布2007-09-11实施———————————————————————————————————

腾讯集团发布

前言

本标准系公司首次发布实施,主要针对公司所有软件产品源代码范围的Java编码风格,对Java文件的文件组织、代码风格、注释、命名、声明、异常、习惯等方面均作出规范,以保障公司项目代码的易维护性和编码安全性。

本标准由研发管理部、3G产品中心共同制定。

本标准主要起草人:Junjun(张莉珺)、Iron(邱会发)

本标准主要审核人:anwenfeng(冯文信)、 Paulinesong(宋虹漫)、Ericlin(林松)、

Stevezheng(郑全战)、Ju nehuang(黄俊)、Kevinxu(许冠严)、

polo(陈广域)、leon(郭凯天)

本标准批准人:jeffxiong(熊明华) 、charles(陈一丹)、

tony(张志东)、ponyma(马化腾)

本标准首次发布日期:2007年9月11日

本标准发送部门:公司各部门

JAVA编码规范

1 目的

为形成公司统一的Java编码风格,以保障公司项目代码的易维护性和编码安全性,特制定本规范。

2 适用范围

本标准适用于腾讯集团(含分公司等各级分支机构)所有使用Java作为开发语言的软件产品。

本标准中“腾讯集团”是指腾讯控股有限公司、其附属公司、及为会计而综合入账的公司,包括但不限于腾讯控股有限公司、深圳市腾讯计算机系统有限公司、腾讯科技(深圳)有限公司、腾讯科技(北京)有限公司、深圳市世纪凯旋科技有限公司、时代朝阳科技(深圳)有限公司、腾讯数码(深圳)有限公司、深圳市财付通科技有限公司。

3 总体原则

所有使用Java作为开发语言的软件产品都须遵照本规范的内容进行编码。

4 文件组织

4.1 规则

4.1.1由于超过2000行的程序难以阅读,应该尽量避免出现超过2000行的程序;

4.1.2一个Java源文件都包含一个单一的公共类或接口。若私有类和接口与一个公共类相关联,可以将它们和公共类放入同一个源文件。公共类必须是这个文件中的第一个类或接口。

4.2 组织顺序

4.2.1文件注释(参见"6.1文件注释");

4.2.2包和引入语句:在多数Java源文件中,第一个非注释行是包语句。在它之后可以跟引入语句;

4.2.3类或接口注释(参见"6.2类或接口注释");

4.2.4类或接口的声明;

4.2.5类或接口的实现注释:如果有关类或接口的信息不适合作为“类或接口文档注释”,可以在类或接口的实现注释中给出;

4.2.6类的(静态)变量:首先是类的公共变量,随后是保护变量,再后是包一级别的变量(没有访问修饰符),最后是私有变量;

4.2.7实例变量:首先是公共级别的,随后是保护级别的,再后是包一级别的(没有访问修饰符),最后是私有级别的;

4.2.8构造方法;

4.2.9方法:方法应该按功能分组,而不应该按作用域或访问权限进行分组。

4.3 范例

直接查看以下文件可以找到编码套用的规则:

(注:可以通过复制粘贴保存到硬盘)

5 代码风格

5.1 缩进

5.1.1程序块要采用缩进风格编写,缩进只使用TAB键,不能使用空格键(编辑器中请将TAB设置为4格);

5.1.2方法体的开始、类的定义、以及if、for、do、while、switch、case语句中的代码都要采用缩进方式;

5.2 对齐

5.2.1程序块的分界符左大括号"{" 和右大括号"}"都另起一行,应各独占一行并且位于同一列,同时与引用它们的语句左对齐;

5.2.2对齐只使用TAB键,不使用空格键;

5.2.3不允许把多个短语句写在一行中,即一行只写一条语句;

5.2.4 if、for、do、while、case、switch、default等语句自占一行。

5.3 换行

一行的长度超过80个字符需要换行,换行规则如下:

5.3.1在一个逗号后面断开;

5.3.2在一个操作符前面断开;

5.3.3长表达式要在低优先级操作符处划分新行;

5.3.4新行缩进2个TAB。

5.4 间隔

5.4.1类、方法及相对独立的程序块之间、变量说明之后必须加空行;

5.4.2关键字之后要留空格,象if、for、while 等关键字之后应留一个空格再跟左括号"(",以突出关键字;

5.4.3方法名与其左括号"("之间不要留空格, 以与关键字区别;

5.4.4二元操作符如" ="、" +=" " >="、" <="、" +"、" *"、" %"、" &&"、" ||"、" <<" ," ^" 等的前后应当加空格;

5.4.5一元操作符如" !"、" ~"、" ++"、" --"等前后不加空格;

5.4.6象"[]"、" ." 这类操作符前后不加空格;

5.4.7 for语句中的表达式应该被空格分开,如:

5.4.8强制转型后应该跟一个空格,如:

6 注释

原则:

——对已经不推荐使用的类和方法需要注明@Deprecated,并说明替代的类或者方法;

——对于针对集合、开关的方法,要在方法注释中表明是否多线程安全。

6.1 文件注释

所有的源文件都应该在开头有一个注释,其中列出文件的版权声明、文件名、功能描述以及创建、修改记录:

6.2 类或接口注释

采用JavaDoc文档注释,在类、接口定义之前应当对其进行注释,包括类、接口的描述、最新修改者、版本号、参考链接等:

注:JavaDoc文档注释:描述Java的类、接口、构造方法、方法、以及字段。每个文档注释都会被置于注释定界符/**...*/之中,一个注释对应一个类、接口或成员。该注释应位于声明之前。文档注释的第一行(/**)不需缩进,随后的文档注释每行都缩进1格(使星号纵向对齐)。

6.3 字段注释

采用JavaDoc文档注释,定义为public的字段必需给出注释,在类的(静态)变量、实例变量定义之前当对其进行注释,给出该字段的描述等:

6.4 方法注释

采用JavaDoc文档注释,在方法定义之前当对其进行注释,包括方法的描述、输入、输出及返回值说明、抛出异常说明、参考链接等:

6.5 其它注释(非JavaDoc文档注释)

6.5.1单行代码注释一律使用注释界定符"//",例如:

6.5.2多行注释使用注释界定符"/*...*/",例如:

7 命名

7.1 基本规则

7.1.1使用可以准确说明变量、字段、类、接口、包等完整的英文描述符;

7.1.2采用大小写混合,提高名字的可读性;

7.1.3采用该领域的术语;尽量少用缩写,但如果一定要使用,当使用公共缩写和习惯缩写等;

7.1.4避免使用相似或者仅在大小写上有区别的名字。

7.2 包命名

7.2.1包名一律小写, 少用缩写和长名;

7.2.2采用以下规则:

[基本包].[项目名].[模块名].[子模块名]...

7.2.3基本包:com.tencent 或com.qq;

7.2.4不得将类直接定义在基本包下,所有项目中的类、接口等都应当定义在各自的项目

和模块包中;

例如:

7.3 类或接口命名

类或接口名是个一名词,采用大小写混合的方式,每个单词的首字母大写。尽量使你的类名简洁而富于描述。使用完整单词,避免用缩写词(除非该缩写词被更广泛使用,像URL,HTML)。

例如:

7.4 变量命名

7.4.1采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写;

7.4.2变量名不应以下划线或美元符号开头;

7.4.3尽量避免单个字符的变量名,除非是一次性的临时变量。临时变量通常被取名为i,j,k,m和n,它们一般用于整型;c,d,e,它们一般用于字符型;

7.4.4不采用匈牙利命名法则,对不易清楚识别出该变量类型的变量应使用类型名或类型名缩写作其后缀,例如:

7.4.5组件或部件变量使用其类型名或类型名缩写作其后缀,例如:

7.4.6集合类型变量,例如数组和矢量,应采用复数命名或使用表示该集合的名词做后缀:

7.5 常量命名

全部采用大写,单词间用下划线隔开:

7.6 方法命名

方法名是一个动词,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写;取值类可使用get前缀,设值类可使用set前缀,判断类可使用is(has)前缀。

8 声明

8.1类或接口声明

类、接口定义语法规范:

[可见性][('abstract'|'final')] [Class|Interface] class_name

[('extends'|'implements')][父类或接口名]

{

}

例如:

8.2方法声明

8.2.1良好的程序设计应该尽可能减小类与类之间耦合,所遵循的经验法则是:尽量限制成员函数的可见性。如果成员函数没必要公有(public),就定义为保护(protected);没必要保护(protected),就定义为私有(private);

8.2.2方法定义语法规范:

[可见性]['abstract'][‘static’] ['final'] ['synchronized'][返回值类型] method_name(参数列表)[('throws')][异常列表]

{

}

例如:

8.2.3声明顺序:

构造方法

静态公共方法

静态私有方法

公共方法

友元方法

受保护方法

私有方法

main方法

8.2.4方法参数建议顺序:(被操作者,操作内容,操作标志,其他):

(建议性)

8.3变量声明

8.3.1一行一个声明;

8.3.2声明局部变量的同时初始化(在变量的初始值依赖于某些先前发生的计算的特殊情况下可以不用同时初始化);

8.3.3只在代码块的开始处声明变量,(一个块是指任何被包含在大括号"{"和"}"中间的代码)不要在首次用到该变量时才声明;

8.3.4避免声明的局部变量覆盖上一级声明的变量,即不要在内部代码块中声明相同的变量名;

8.3.5公共和保护的可见性应当尽量避免,所有的字段都建议置为私有,由获取和设置成员函数(Getter、Setter)访问;

8.3.6定义一个变量或者常量的时候,不要包含包名(类似java.security.MessageDigest digest = null),而要定义成下面的格式,除非是两个包有相同的类名:

8.3.7字段定义语法规范:

[(‘public’|’private’|’protected’)]

[‘static’] [‘final’]

data_type field_name [ ‘=’ expression] ‘;’

例如:

8.3.8数组声明时应当将"[]"跟在类型后,而不是字段名后:

8.3.9声明顺序:

常量

类变量

实例变量:

公有字段

受保护字段

友元字段

私有字段

9 异常

9.1捕捉异常的目的是为了处理它。

9.2多个异常应分别捕捉并处理,避免使用一个单一的catch来处理。

10 习惯

10.1 if、for、do、while等语句的执行语句部分无论多少都要加括号"{}";

10.2每当一个case顺着往下执行时(因为没有break语句),通常应在break语句的位置添加注释;

10.3尽量避免在循环中构造和释放对象;

10.4在使用局部变量的过程,按就近原则处理。不允许定义一个局部变量,然后在很远的地方才使用;

10.5相同的功能不允许复制成N份代码;

10.6在处理 String 的时候要尽量使用 StringBuffer 类。

11 附则

本规范由研发管理部、3G产品中心负责修订、解释,本规范自发布之日起实施。

12 附录

附录A《编码安全规范》

附录A

(规范性附录)

编码安全规范

编码安全规范v1.0.

doc ———————————

C语言注释规范

C语言注释规范 1.注释原则 同一软件项目开发中,尽量保持代码注释规范和统一。 注释方便了代码的阅读和维护。 边写代码边注释,修改代码时要相应修改注释,保证注释和代码的一致性。 注释要简洁明确,不要出现形容词。 对于写的好的注释,我们将是第一个受益者。 大型软件开发中,通过别人的注释可以快速知道他人所写函数的功能,返回值,参数的使用。 2.文件头部的注释 示例: / * Program Assignment : 该文件的作用 * Author: 作者 * Date: 2013/8/6 14:34 * Description: 该文件的描述 *****/ /* * Source code in : 源代码的路径 * Function List: * initLinear 初始化线性表 * destoryLinear 释放线性表申请的空间 * isLinearEmpty 判断线性表是否为空 * isLinearFull 判断线性表是否为满 * getLinearElementValue 取得下标为index的元素的值 */ 注意:这个函数列表可以快速查询到我们想要了解的函数。 3.结构体,全局变量等的注释 示例: typedef POLYNOMIAL USER_TYPE; /* 新的数据类型的描述*/ int a; /* 全局变量的作用*/ /* 说明结构体的功能*/ typedef struct LINEAR { USER_TYPE *data; /* 每个成员的意义(作用) */ int maxRoom; /* 每个成员的意义(作用) */

int elementCount; /* 每个成员的意义(作用) */ }LINEAR; 4.函数的注释 在逻辑性较强的的地方加入注释,以便其他人的理解,在一定的程度上排除bug。 示例: /* * Function Name: getLinearElementIndex * Purpose: 取得元素的index值 * Params : * @LINEAR linear 线性表实例 * @USER_TYPE var 类型为USER_TYPE的实例 * @int (*)() cmp 提供接口,让用户定义具体比较函数 * Return: int 返回元素的index值 * Limitation: 如果返回-1,则代表不存在var的元素 */ int getLinearElementIndex(LINEAR linear, USER_TYPE var, int (*cmp)()) { /* * 如果逻辑太过复杂,这里写明该算法的过程和思路。 */ boolean found = FALSE; int i; for(i = 0; i < && !found; i++) if(cmp[i], var) == 0) found = TRUE; if(i >= i = NOT_FOUND; return i; }

C语言编码规范

C语言编程规范 对于程序员来说,能工作的代码并不等于“好”的代码。“好”代码的指标很多,包括易读、易维护、易移植和可靠等。其中,可靠性对嵌入式系统非常重要,尤其是在那些对安全性要求很高的系统中,如飞行器、汽车和工业控制中。这些系统的特点是:只要工作稍有偏差,就有可能造成重大损失或者人员伤亡。一个不容易出错的系统,除了要有很好的硬件设计(如电磁兼容性),还要有很健壮或者说“安全”的程序。 然而,很少有程序员知道什么样的程序是安全的程序。很多程序只是表面上可以干活,还存在着大量的隐患。当然,这其中也有C语言自身的原因。因为C语言是一门难以掌握的语言,其灵活的编程方式和语法规则对于一个新手来说很可能会成为机关重重的陷阱。同时,C语言的定义还并不完全,即使是国际通用的C语言标准,也还存在着很多未完全定义的地方。要求所有的嵌入式程序员都成为C语言专家,避开所有可能带来危险的编程方式,是不现实的。最好的方法是有一个针对安全性的C语言编程规范,告诉程序员该如何做。 本规范在制定过程中,主要参考了业界比较推崇的《华为软件编程规范和范例》和《MI SRA 2004规则》,适合C语言初学者使用,目的在于在教学中培养学生良好的编程规范和意识、素质,促进所设计程序安全、健壮、可靠、可读与可维护(程序简单、清晰)。考虑到面向的是初学者,为便于教学和课程考核操作,本规范中的要求比较基本。事实上,很多公司都有自己规定的代码风格,包括命名规则、缩进规则等,学生参加工作后,应再进一步学习和应用公司的规范。 建议学生在学习本规范的同时,花点时间阅读本规范的参考文献原文,特别是熟读本规范的参考文献之一的《“安全第一”的C语言编程规范》,深刻理解编程规范与程序安全、健壮、可靠、可读、可维护间的关系和作用,在学习和工作中养成良好的编程风格。 1 排版 1.1 严格采用阶梯层次组织程序代码 函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case 语句下的情况处理语句也要遵从语句缩进要求。 程序块的分界符(如C/C++ 语言的大括号‘{’和‘}’)应各独占一行并且位于同一列,同时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举的定义以及if 、for 、do 、while 、switch 、case 语句中的程序都要采用如上的缩进方式。 各层次缩进的风格采用TAB缩进(TAB宽度原则上使用系统默认值,TC使用8空格宽度,VC使用4空格宽度)。示例:

C语言编程规范

编码规范 1. 头文件编码规范 (2) 2. 函数编写规范 (2) 3. 标识符命名与定义 (2) 3.1通用命名规则 (2) 3.2 变量命名规则 (3) 3.3函数命名规则 (3) 3.4 宏的命名规则 (3) 4. 变量 (3) 5. 宏、常量 (4) 6. 质量保证 (4) 7. 程序效率 (5) 8. 注释 (5) 9. 排版与格式 (6) 10. 表达式 (7) 11. 代码编辑、编译 (7) 12. 安全性 (7) 13. 可读性 (7) 14. 可测性 (7) 15. 单元测试 (8) 16. 可移植性 (8)

1. 头文件编码规范 1. 禁止头文件循环依赖。 2. .c/.h文件不要包含用不到的头文件。 3. 禁止在头文件中定义变量。 4. 同一产品统一包含头文件排列方式。(如功能块排序、文件名升序、稳定度排序。) 5. 只能通过包含头文件的方式使用其他.c提供的接口,禁止在.c中通过extern的方式使用外部函数接口、变量。 2. 函数编写规范 1. 一个函数仅完成一件功能。 2. 重复代码应该尽可能提炼成函数。 3.为简单功能编写函数 4.函数的返回值要清楚、明了,让使用者不容易忽视错误情况。 5. 避免函数过长,新增函数不超过100行(非空非注释行)。 6. 避免函数的代码块嵌套过深,新增函数的代码块嵌套不超过4层。 7. 可重入函数应避免使用全局变量和禁止使用static变量。 8. 设计高扇入,合理扇出(小于7)的函数。 9. 废弃代码(没有被调用的函数和变量)要及时注释(有助于更好理解程序)。 10. 对所调用函数的错误返回码要仔细、全面地处理。 11. 函数不变参数使用const。 12. 函数应避免使用全局变量、静态局部变量和I/O操作,不可避免的地方应集中使用。 13. 函数的参数个数不超过5个。 14. 减少或禁止函数本身或函数间的递归调用 3. 标识符命名与定义 3.1通用命名规则 1. 标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。 2. 除了常见的通用缩写以外,不使用单词缩写,不得使用汉语拼音。 示例: argument 可缩写为arg buffer 可缩写为buff clock 可缩写为clk command 可缩写为cmd compare 可缩写为cmp configuration 可缩写为cfg device 可缩写为dev error 可缩写为err hexadecimal 可缩写为hex increment 可缩写为inc initialize 可缩写为init maximum 可缩写为max message 可缩写为msg minimum 可缩写为min parameter 可缩写为para

C语言编写规范之注释

1、头文件包含Includes 2、私有类型定义 Private typedef 3、私有定义Private define 4、私有宏定义 Private macro 5、私有变量 Private variables 6、私有函数原型Private function prototypes 7、私有函数Private functions 8、私有函数前注释 /****************************************************************************** * * Function Name : FSMC_NOR_Init * Description : Configures the FSMC and GPIOs to interface with the NOR memory. * This function must be called before any write/read operation * on the NOR. * Input : None * Output : None * Return : None ******************************************************************************* / 9、程序块采用缩进风格编写,缩进空格为4。 10、相对独立的程序块之间、变量说明之后必须加空行; 11、较长的字符(>80字符)要分成多行书写,长表达式要在低优先级操作符划分新行,操作符放在新行之首,新行要恰当缩进,保持排版整齐; 12、循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首; 13、若函数或过程中的参数较长,则要进行适当的划分。 14、不允许把多个短语句写在一行中,即一行只写一条语句。 15、if、for、do、while、case、switch、default等语句自占一行,且if、for、 do、while等语句的执行语句部分无论多少都要加括号{}。 16、对齐只使用空格键,不使用TAB键; 17、 函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case 语句下的情况处理语句也要遵从语句缩进要求 18、 程序块的分界符(如C/C++语言的大括号‘{’和‘}’)应各独占一行并且位于同一 列,同时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举的定义以 及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。 19、 在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或

C语言程序设计课程标准

《C语言程序设计》课程标准 课程编码:03012208 课程模块:专业必修课 学时:90 课程类型:B类(理论+实践) 适用专业:计算机网络专业 1. 概述 C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。 本课程旨在使学生掌握程序设计的基本方法及思维,形成程序设计基本思想,掌握程序调试的基本方法,使学生初步具备程序设计能力,为学生进一步学习其他专业课程和今后从事网络技术工作打下坚实的基础。 课程的性质 《C语言程序设计》是一门专业必修课,是学习其它工科课程的基础。掌握程序设计的前提是掌握程序设计语言,C语言以其灵活性和实用性受到了广大计算机应用人员的喜爱。一旦掌握了C语言,就可以较为轻松地学习后续的Java程序设计、数据库技术等程序设计语言。本课程以程序设计思想为主线,介绍C语言的基本概念和程序设计的思想和方法,培养学生运用C语言解决实际问题的能力。 前导课程:计算机文化基础等。 后继课程:Java程序设计、数据库技术、信息安全技术、网络操作系统等。 课程设计理念 通过对多家IT企业的走访,我们了解到自学能力、动手能力、团队协作能力是现代企业对人才的共同要求。因而我们也把培养具有这些能力的学生作为我们的课程目标,把对这些能力的培养融入到平常的授课过程中。对以计算机网络、汽车电子等专业为代表的学生,主要注重项目分析,流程图设计以及编程技巧和方法的培养,为进一步培养软件项目综合开发和应用能力作准备。 1、基于工作过程,以职业能力培养为重点,与行业企业合作进行的课程开发与设计。 在课程的讲授过程中,采用任务驱动的模式,以案例教学为主。在学生掌握了相应知识点后,再提出新的问题,要求学生通过修改已有的代码加以解决。在修改代码的过程中,既培养了学生的自学能力,又锻炼了学生的动手能力。

C语言软件编写规范

C语言软件编写规范 以下是为大家整理的c语言软件编写规范的相关范文,本文关键词为语言,软件,编写,规范,北京,森馥,科技,股份有限公司,前言,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在教育文库中查看更多范文。 北京森馥科技股份有限公司 前言: 一个好的程序编写规范是编写高质量程序的保证。清晰、规范的源程序不仅仅是方便阅读,更重要的是能够便于检查错误,提高调试

效率,从而最终保证软件的质量和可维护性。 说明: 本规范适用于公司内使用c语言编码的所有软件。本规范自发布之日起生效,以后新编写的和修改的代码应遵守本规范。 注:使用固件和操作系统源代码应保留其代码风格 1 北京森馥科技股份有限公司 目录 1.排版与格式................................................................................................................. ....................................32.标识符命名与定义................................................................................................................. ........................43.注释书写规范................................................................................................................. .. (6) 2 北京森馥科技股份有限公司 1.排版与格式 规则1:程序块采用缩进风格编写,每级缩进为4个空格。 程序块采用缩进风格编写,每级缩进为4个空格,不使用TAb键,

软件开发代码规范(C语言)

软件开发代码规范(仅供内部使用) 拟制: 审核: 核准: 签发: 文档版本:V0.11日期: 日期: 日期: 日期: 2011-5-11

目录 第一章原则 (4) 第二章排版 (5) 2.1 空行 (5) 2.2 代码行 (6) 2.3 代码行内的空格 (6) 2.4 对齐缩进 (7) 2.5 长行拆分 (8) 第三章注释 (10) 3.1 通用规则 (10) 3.2 文件注释 (10) 3.3 函数注释 (11) 3.4 数据注释 (12) 3.5 代码注释 (12) 第四章命名 (15) 4.1 通用命名规则 (15) 4.2 文件命名 (15) 4.3 类型命名 (15) 4.4 变量命名 (16) 4.5 常量命名 (17) 4.6 函数命名 (17) 4.7 枚举命名 (17) 4.8 宏命名 (18)

第五章杂项 (19)

文件修改记录

第一章原则 本文档的目的是提供一个公共的编码规范。 这个规范详细阐述在编码时要怎样写、不要怎样写,旨在提高代码的可读性、可维护性, 使代码易于管理,使所有人可以集中精力去实现内容,而非处理各种复杂的表现形式。 使代码易于管理的方法之一是增强代码一致性,让别人可以读懂你的代码是很重要的,保持统一编程风格意味着可以轻松根据模式匹配”规则推断各种符号的含义。创建通用的、 必需的习惯用语和模式可以使代码更加容易理解。虽然在某些情况下改变一些编程风格可能 会是好的选择,但我们还是应该遵循一致性原则,尽量不这样去做。 关键在于保持一致。

第二章排版 2.1 空行 【规则2-1-1】在每个函数、结构体、枚举定义结束之后都要加空行。 【规则2-1-2】在一个函数体内,逻辑密切相关的语句之间不加空行,其它地方应加空行分隔。 【规则2-1-3】相对独立的程序块之间、变量说明之后必须加空行。 不规范代码规范代码

c语言程序代码编写规范

C语言程序代码编写规范 (初级程序员讨论版) 前言 一个好的程序编写规范是编写高质量程序的保证。清晰、规范的源程序不仅仅是方便阅读,更重要的是能够便于检查错误,提高调试效率,从而最终保证软件的质量和可维护性。 说明 此文挡还在完善改进中,如有不足,欢迎指正。 本文档主要适用于刚刚开始接触编程的初学者。 对于具有一定工程项目开发经验的程序员,建议学习C语言程序代码编写规范 —高级版。 目录 1代码书写规范 2注释书写规范 3命名规范

内容 1 代码书写规范 函数定义 每个函数的定义和说明应该从第1列开始书写。函数名(包括参数表)和函数体的花括号(“{”和“}”)应该各占一行。在函数体结尾的括号(“}”)后面应该加上注释,注释中应该包括函数名,这样比较方便进行括号配对检查,也可以清晰地看出来函数是否结束。 范例1:函数的声明 void matMyFunction(int n) { …… } /* matMyFunction*/ 空格的使用 使用空格分割所有演算符号和操作数。 这条规则的例外是“->”,““.”, “()”和“[]”,这些操作符和操作数之间不空格。 当需要把一个程序行的内容分成几行写时,操作符号应该放在行末,而不是下一行的开头。 缩进的设置 代码书写应该遵从结构化的要求,采用缩进的格式。最小缩进量为4个空格,整个文件内部应该统一,不要混用Tab键和4个空格这两种情况,因为不同的编辑器对Tab键的处理方法不同。 折行的使用 每行的长度不要超过80个字符,当程序行太长时,应该分行书写。 分行时应该按照自然的逻辑关系进行,例如:不要把一个简单的逻辑判断写在 两行上。 分行后的缩进应该按照程序的逻辑关系进行对齐。例如:参数表折行后,下面 的行应该在参数表左括号的下方。 范例2:折行的格式

C语言编程规范标准

编码规 1. 头文件编码规 (2) 2. 函数编写规 (2) 3. 标识符命名与定义 (2) 3.1通用命名规则 (2) 3.2 变量命名规则 (3) 3.3函数命名规则 (3) 3.4 宏的命名规则 (3) 4. 变量 (3) 5. 宏、常量 (4) 6. 质量保证 (4) 7. 程序效率 (5) 8. 注释 (5) 9. 排版与格式 (6) 10. 表达式 (7) 11. 代码编辑、编译 (7) 12. 安全性 (7) 13. 可读性 (7) 14. 可测性 (7) 15. 单元测试 (8) 16. 可移植性 (8)

1. 头文件编码规 1. 禁止头文件循环依赖。 2. .c/.h文件不要包含用不到的头文件。 3. 禁止在头文件中定义变量。 4. 同一产品统一包含头文件排列方式。(如功能块排序、文件名升序、稳定度排序。) 5. 只能通过包含头文件的方式使用其他.c提供的接口,禁止在.c过extern的方式使用外部函数接口、变量。 2. 函数编写规 1. 一个函数仅完成一件功能。 2. 重复代码应该尽可能提炼成函数。 3.为简单功能编写函数 4.函数的返回值要清楚、明了,让使用者不容易忽视错误情况。 5. 避免函数过长,新增函数不超过100行(非空非注释行)。 6. 避免函数的代码块嵌套过深,新增函数的代码块嵌套不超过4层。 7. 可重入函数应避免使用全局变量和禁止使用static变量。 8. 设计高扇入,合理扇出(小于7)的函数。 9. 废弃代码(没有被调用的函数和变量)要及时注释(有助于更好理解程序)。 10. 对所调用函数的错误返回码要仔细、全面地处理。 11. 函数不变参数使用const。 12. 函数应避免使用全局变量、静态局部变量和I/O操作,不可避免的地方应集中使用。 13. 函数的参数个数不超过5个。 14. 减少或禁止函数本身或函数间的递归调用 3. 标识符命名与定义 3.1通用命名规则 1. 标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。 2. 除了常见的通用缩写以外,不使用单词缩写,不得使用汉语拼音。 示例: argument 可缩写为arg buffer 可缩写为buff clock 可缩写为clk command 可缩写为cmd compare 可缩写为cmp configuration 可缩写为cfg device 可缩写为dev error 可缩写为err hexadecimal 可缩写为hex increment 可缩写为inc initialize 可缩写为init maximum 可缩写为max message 可缩写为msg minimum 可缩写为min parameter 可缩写为para

华为CC语言编程规范

百度文库- 让每个人平等地提升自我 目录 1 排版 (2) 4 可读性 (11) 6 函数、过程 (13) 7 可测性 (14)

1 排版 11-1:程序块要采用缩进风格编写,缩进的空格数为4个。 说明:对于由开发工具自动生成的代码可以有不一致。 11-2:相对独立的程序块之间、变量说明之后必须加空行。 示例:如下例子不符合规范。 if (!valid_ni(ni)) { ... epssn_index; repssn_ni = ssn_data[index].ni; 应如下书写 if (!valid_ni(ni)) { ... epssn_index; repssn_ni = ssn_data[index].ni; 11-3:较长的语句(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。 示例: = NO7_TO_STAT_PERM_COUNT_LEN + STAT_SIZE_PER_FRAM * sizeof( _UL ); act_task_table[frame_id * STAT_TASK_CHECK_NUMBER + index].occupied = stat_poi[index].occupied; act_task_table[taskno].duration_true_or_false = SYS_get_sccp_statistic_state( stat_item );

report_or_not_flag = ((taskno < MAX_ACT_TASK_NUMBER) && (n7stat_stat_item_valid (stat_item)) && (act_task_table[taskno].result_data != 0)); 11-4:循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。 示例: if ((taskno < max_act_task_number) && (n7stat_stat_item_valid (stat_item))) { ... ord_length) && (j < ; i++, j++) { ... . tat_object), sizeof (_STAT_OBJECT)); n7stat_flash_act_duration( stat_item, frame_id *STAT_TASK_CHECK_NUMBER + index, stat_object ); 11-6:不允许把多个短语句写在一行中,即一行只写一条语句。 示例:如下例子不符合规范。 = 0; = 0; 应如下书写 = 0; = 0; 11-7:if、for、do、while、case、switch、default等语句自占一行,且if、for、do、while等语句的执行语句部分无论多少都要加括号{}。

C语言编程规范V

C语言编程规范-V1.0 一、文件命名 1.文件主名以字母开头,由字母、数字或下划线组成 2.采用下列文件名后缀: .c(C程序文件) .h(头文件) .o(可重载目标文件) .a(静态库) .sl(动态库) 注:与特定编译器缺省后缀约定冲突的,遵循编译器的缺省后缀约定 3.编辑工具make的控制文件取名makefile 4.自述文件取名readme 二、源程序文件 1.源程序文件段落依照下列顺序: 序言 系统头文件引用(include) 用户头文件引用(include) 全局常量宏定义(define) 全局函数宏定义(define) 全局类型定义(typedef) 全局枚举类型定义(enums) 全局变量说明(extern) 全局变量说明(non-static) 全局变量说明(static) 函数(通常从最高层开始,按层次横向排列。如果定义较多的独立的公用函数,可以考虑按字母顺序排列) 2.序言内容应包括版权声明、文件名、内容描述、版本历史,格式如下:

/* * Copyright 2014,XXX Co., Ltd. All right reserved. * This program prints out messages from a queue. * Edit History: * 2014/11/28 - Created by GaoXuefeng. * 2014/11/29 - Modified by ChenChen to print output in the new form. */ 3.段落之间用空行分隔 4.文件长度尽可能在1000行之内 5.每行长度尽可能不要超过79列 三、头文件 1.用户头文件名避免使用系统头文件名 2.按照功能组织头文件,例如独立的子系统应单独一个头文件 3.与机器相关的说明组成单独头文件 4.多个源文件引用的说明放入头文件中 5.头文件不要嵌套 6.说明函数或外部变量的头文件应在定义该函数或变量的文件中引用 7.不要在头文件中定义变量 8.内部使用的宏、枚举、结构定义不应放入头文件中 9.内部使用的函数(相当于类的私有方法)声明不应放在头文件中 10.只引用需要的头文件 11.每个头文件采用下面的形式避免被重复引用: #ifndef EXAMPLE_H #define EXAMPLE_H ...... /* body of example.h file */

华为技术有限公司c语言编程规范

DKBA 华为技术有限公司内部技术规范 DKBA 2826-2011.5 C语言编程规范 2011年5月9日发布 2011年5月9日实施 华为技术有限公司 Huawei Technologies Co., Ltd. 版权所有侵权必究 All rights reserved

修订声明Revision declaration 本规范拟制与解释部门: 本规范的相关系列规范或文件: 相关国际规范或文件一致性: 替代或作废的其它规范或文件: 相关规范或文件的相互关系:

目录Table of Contents 0规范制订说明 (5) 0.1前言 (5) 0.2代码总体原则 (5) 0.3规范实施、解释 (6) 0.4术语定义 (6) 1头文件 (6) 2函数 (12) 3标识符命名与定义 (21) 3.1通用命名规则 (21) 3.2文件命名规则 (23) 3.3变量命名规则 (23) 3.4函数命名规则 (24) 3.5宏的命名规则 (24) 4变量 (25) 5宏、常量 (28) 6质量保证 (32) 7程序效率 (36) 8注释 (39) 9排版与格式 (44) 10表达式 (46) 11代码编辑、编译 (49) 12可测性 (50) 13安全性 (51) 13.1字符串操作安全 (51) 13.2整数安全 (52) 13.3格式化输出安全 (56) 13.4文件I/O安全 (57) 13.5其它 (59) 14单元测试 (59) 15可移植性 (60) 16业界编程规范 (60)

C语言编程规范 范围: 本规范适用于公司内使用C语言编码的所有软件。本规范自发布之日起生效,以后新编写的和修改的代码应遵守本规范。 简介: 本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

C语言编程规范

第一章 C语言编程规范 C语言编程规范使用于所有的平台程序和应用程序开发。 C语言编程规范分为编程环境,命名规范,内容排列,书写格式,注释规范和程序修改等六部分内容。 具体格式参见《C头文件样本》和《C源程序样本》。 1.1编程环境。 包括目录及其权限设置,makefile使用两部分内容。 1.1.1目录设置。 进行C语言程序开发,一般设置如下六个目录。 各目录及其文件的权限一般使用系统确省,也可根据具体需要进行设置。 ●SRC:存放C源程序文件(*.c),数据库语言程序文件(如*.ec)。 ●INCL:存放C头文件(*.h)。 ●OBJ:存放目标文件(*.o)。 ●LIB:存放一般库文件(*.a),动态链接库文件(如*.so)。 ●BIN:存放可执行文件,SHELL文件。 ●BAK:源程序和头文件备份目录(以日期做文件后缀,如*.990806)。 1.1.2Makefile使用。 Makefile存放在SRC目录下,控制程序的编译与连接,库的生成与更新。 Makefile的定义内容和排列顺序为: ●编程环境目录宏定义。 ●C头文件搜索目录宏定义。 ●库文件搜索目录宏定义。 ●编译控制参数宏定义。 ●一般程序编译与连接方法。

●全部程序编译与连接列表。 ●复杂程序(多个.o)连接方法。 1.2命名规范。 包括源程序文件,头文件,目标文件,库文件,执行文件,宏定义,变量,结构,结构元素,函数等十类命名规范。 各类命名规范均基于《系统基本数据名称集》。 1.2.1源程序文件。 ●一般形式:AAABCCCC。不得超过8个字符。 ●AAA(2或3个字符):表示该源程序所属的系统(如btp,feb等)。 ●B:一般情况可省略。当多个源程序文件属于同一功能的分支程序,用来 表示源程序文件的功能类型(如m表示主程序,i表示输入,o表示输出等)。 ●CCCC:表示源程序的功能。 1.2.2头文件。 ●一般形式:AAACCCCC。不得超过8个字符。 ●AAA(2或3个字符):表示该头文件所属的系统(如btp,feb等)。 ●CCCCC:表示头文件的功能。 ●如头文件只被某一个源程序文件使用,名称应和源程序文件名称相同。 1.2.3目标文件。 ●一般的,应和源程序文件名称相同。 ●如和源程序文件名称不同,须得到主设计人员和部门主管同意。 1.2.4库文件。 ●库文件的名称一般在系统总体设计时即确定。 ●一般形式:libAAACCCC。 ●前三个字符一般固定为lib。 ●AAA(2或3个字符):表示该库文件所属的系统(如btp,feb等)。

c语言安全编码规范

竭诚为您提供优质文档/双击可除c语言安全编码规范 篇一:c语言编码规范 篇二:c语言代码规范 c语言代码规范 1.基本要求 1.1程序结构清析,简单易懂,单个函数的程序行数不得超过100行。 1.2打算干什么,要简单,直接了当,代码精简,避免垃圾程序。 1.3尽量使用标准库函数和公共函数。 1.4不要随意定义全局变量,尽量使用局部变量。 1.5使用括号以避免二义性。 2.可读性要求 2.1可读性第一,效率第二。 2.2保持注释与代码完全一致。 2.3每个源程序文件,都有文件头说明,说明规格见规范。 2.4每个函数,都有函数头说明,说明规格见规范。

2.5主要变量(结构、联合、类或对象)定义或引用时,注释能反映其含义。 2.7常量定义(deFine)有相应说明。 2.8处理过程的每个阶段都有相关注释说明。 2.9在典型算法前都有注释。 2.10利用缩进来显示程序的逻辑结构,缩进量一致并以tab键为单位,定义tab为6个字节。 2.11循环、分支层次不要超过五层。 2.12注释可以与语句在同一行,也可以在上行。 2.13空行和空白字符也是一种特殊注释。 2.14一目了然的语句不加注释。 2.15注释的作用范围可以为:定义、引用、条件分支以及一段代码。 2.16注释行数(不包括程序头和函数头说明部份)应占总行数的1/5到1/3。 3.结构化要求 3.1禁止出现两条等价的支路。 3.2禁止goto语句。 3.3用iF语句来强调只执行两组语句中的一组。禁止elsegoto和elseRetuRn。 3.4用case实现多路分支。 3.5避免从循环引出多个出口。

3.6函数只有一个出口。 3.7不使用条件赋值语句。 3.8避免不必要的分支。 3.9不要轻易用条件分支去替换逻辑表达式。 4.正确性与容错性要求 4.1程序首先是正确,其次是优美 4.2无法证明你的程序没有错误,因此在编写完一段程序后,应先回头检查。 4.3改一个错误时可能产生新的错误,因此在修改前首先考虑对其它程序的影响。 4.4所有变量在调用前必须被初始化。 4.5对所有的用户输入,必须进行合法性检查。 4.6不要比较浮点数的相等, 如:10.0*0.1==1.0,不可靠 4.7程序与环境或状态发生关系时,必须主动去处理发生的意外事件,如文件能否逻辑锁定、打印机是否联机等。 4.8单元测试也是编程的一部份,提交联调测试的程序必须通过单元测试。 5.可重用性要求 5.1重复使用的完成相对独立功能的算法或代码应抽象为公共控件或类。 5.2公共控件或类应考虑oo思想,减少外界联系,考虑

编码规范(C语言)

编码规范(C语言)

1.引言 1.1简介 所有的程序开发手册都包含了各种规则。一些习惯自由程序的人(例如C程序员)可能对这些规则很不适应,但是在多个开发人员共同协作的情况下,这些规则是必需的。这不仅仅是为了开发效率,而且也为了测试和后期维护。 良好的编码习惯有助于标准化程序的结构和编码风格,使源代码对于自己和别人都易读和易懂。在开发周期中越早使用恰当的编码规定,将会最大程度的提高项目的生产率。良好的编码习惯除了代码格式,详细的注释外,还应该包括使用有助于提高程序效率的编码方式。 规范的开发有助于提高源码的可读性,可维护性,对于提高项目的整体效率更是不可缺少的(尤其是团队开发)。 1.2目的 本文是一套面向cprogrammer 和cdeveloper 进行开发所应遵循的开发规范。按照此规范来开发C 程序可带来以下益处: 码的编写保持一致性; 高代码的可读性和可维护性; 团队开发一个项目的情况下,程序员之间可代码共享; 于代码的回顾 2.命名规范 2.1文件命名规范 件名必须由前缀和后缀组成,最好采用长文件命名格式; 件名必须用英文字母表达,禁止使用中文; 于几个单词组合表达的文件名,每个单词必须小写,单词之间用下划线“_”分割; 文件后缀格式为.c,头文件后缀格式为:.h。 例:trade_rebuild.c,trade_rebuild.h 2.2 变量命名规范 命名必须具有一定的实际意义,形式为xAbcFgh。x 由变量类型确定,Abc、Fgh 表示连续意义字符串,如果连续意义字符串仅两个,可都大写,如OK。

表2-1 变量类型缩写表 环变量)。变量应为名词或名词短语。 2.3常量命名和宏定义规范 量和宏定义必须具有一定的实际意义; 量和宏定义在#include 和函数定义之间; 量和宏定义必须全部以大写字母来撰写,中间可根据意义的连续性用下划线连接,每一条定义的右侧必须有一简单的注释,说明其作用。 例如: #define REPO_PRICE 1000000/*回购价格*/ 2.4函数命名规范 函数名用大写字母开头的单词组合而成,建议使用祈使动词或动词短语。例如: voidImportantPoint(void);

相关文档