ImageVerifierCode 换一换
格式:PDF , 页数:61 ,大小:915.01KB ,
资源ID:3210753      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3210753.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(华为技术有限公司c语言编程规范.pdf)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、DKBA 华为技术有限公司内部技术规范 DKBA 2826-2011.5 C语言编程规范 2011年5月9日发布 2011年5月9日实施 华为技术有限公司 Huawei Technologies Co.,Ltd.版权所有 侵权必究 All rights reserved 密级:confidentiality level DKBA 2826-2011.5 2011-06-02 华为机密,未经许可不得扩散 Huawei Confidential 第2页,共61页Page 2,Total61 修订声明Revision declaration 本本规范规范拟制与解释部门:拟制与解释部门:本规范的相关系

2、列规范或文件:相关国际规范或文件一致性:替代或作废的其它规范或文件:相关规范或文件的相互关系:规范号规范号 主要起草部门专家主要起草部门专家 主要评审部门专家主要评审部门专家 修订情况修订情况 DKBAxxxx.x-xxxx.xx PSST质量部:郭曙光00121837 网络:张伟00118807 周灿00056781 王晶00041937 陈艺彪00036913 IP开发部:薛治00038309 核心网:张小林00058208 王德喜00040674 李明胜00042021 软件公司:文 滔00119601 无线:刘爱华00162172 中研:谭洪00162654 PSST质量部:李重霄00

3、117374 郭永生00120218 核心网:张进柏00120359 中研:张建保00116237 无线:苏光牛00118740 郑铭00118617 陶永祥00120482 软件公司:周代兵00120359 刘心红00118478 朱文琦00172539 网络:王玎00168059 黄维东49827 IP开发部:饶远00152313 密级:confidentiality level DKBA 2826-2011.5 2011-06-02 华为机密,未经许可不得扩散 Huawei Confidential 第3页,共61页Page 3,Total61 目 录Table of Contents

4、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 格式化输出安全

5、.56 13.4 文件I/O安全.57 13.5 其它.59 14 单元测试.59 15 可移植性.60 16 业界编程规范.60 密级:confidentiality level DKBA 2826-2011.5 2011-06-02 华为机密,未经许可不得扩散 Huawei Confidential 第4页,共61页Page 4,Total61 C语言编程规范 范范 围围:本规范适用于公司内使用C语言编码的所有软件。本规范自发布之日起生效,以后新编写的和修改的代码应遵守本规范。简简 介:介:本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植

6、各个方面对C语言编程作出了具体指导。密级:confidentiality level DKBA 2826-2011.5 2011-06-02 华为机密,未经许可不得扩散 Huawei Confidential 第5页,共61页Page 5,Total61 0 0 规范制订说明规范制订说明 0.1 前言 为提高产品代码质量,指导广大软件开发人员编写出简洁、可维护、可靠、可测试、高效、可移植的代码,编程规范修订工作组分析、总结了我司的各种典型编码问题,并参考了业界编程规范近年来的成果,重新对我司1999年版编程规范进行了梳理、优化、刷新,编写了本规范。本规范将分为完整版和精简版,完整版将包括更多的

7、样例、规范的解释以及参考材料(what&why),而精简版将只包含规则部分(what)以便查阅。在本规范的最后,列出了一些业界比较优秀的编程规范,作为延伸阅读参考材料。0.2 代码总体原则 1 1、清晰第一、清晰第一 清晰性是易于维护、易于重构的程序必需具备的特征。清晰性是易于维护、易于重构的程序必需具备的特征。代码首先是给人读的,好的代码应当可以像文章一样发声朗诵出来。目前软件维护期成本占整个生命周期成本的40%90%。根据业界经验,维护期变更代码的成本,小型系统是开发期的5倍,大型系统(100万行代码以上)可以达到100倍。业界的调查指出,开发组平均大约一半的人力用于弥补过去的错误,而不是

8、添加新的功能来帮助公司提高竞争力。“程序必须为阅读它的人而编写,只是顺便用于机器执行。”Harold Abelson 和 Gerald Jay Sussman“编写程序应该以人为本,计算机第二。”Steve McConnell 本规范通过后文中的原则(如头优秀的代码可以自我解释,不通过注释即可轻易读懂/头文件中适合放置接口的声明,不适合放置实现/除了常见的通用缩写以外,不使用单词缩写,不得使用汉语拼音)、规则(如防止局部变量与全局变量同名)等说明清晰的重要性。一般情况下,代码的可阅读性高于性能,只有确定性能是瓶颈时,才应该主动优化。2 2、简洁为美、简洁为美 简洁就是易于理解并且易于实现。简洁

9、就是易于理解并且易于实现。代码越长越难以看懂,也就越容易在修改时引入错误。写的代码越多,意味着出错的地方越多,也就意味着代码的可靠性越低。因此,我们提倡大家通过编写简洁明了的代码来提升代码可靠性。废弃的代码(没有被调用的函数和全局变量)要及时清除,重复代码应该尽可能提炼成函数。本规范通过后文中的原则(如文件应当职责单一/一个函数仅完成一件功能)、规则(重复代码应该尽可能提炼成函数/避免函数过长,新增函数不超过50行)等说明简洁的重要性。3 3、选择合适的风格,与代码原有风格保持一致、选择合适的风格,与代码原有风格保持一致 产品所有人共同分享同一种风格所带来的好处,远远超出为了统一而付出的代价。

10、在公司已有编码规范的指导下,审慎地编排代码以使代码尽可能清晰,是一项非常重要的技能。如果重构如果重构/修改其他风格修改其他风格的代码时,比较明智的做法是根据的代码时,比较明智的做法是根据现有现有代码代码的的现有风格继续编写代码现有风格继续编写代码,或者使用格式转换工具进行转 密级:confidentiality level DKBA 2826-2011.5 2011-06-02 华为机密,未经许可不得扩散 Huawei Confidential 第6页,共61页Page 6,Total61 换成公司内部风格。0.3 规范实施、解释 本规范制定了编写C语言程序的基本原则、规则和建议。本规范适用于

11、公司内使用C语言编码的所有软件。本规范自发布之日起生效,对以后新编写的和修改的代码应遵守本规范。本规范由质量体系发布和维护。实施中遇到问题,可以到论坛http:/ 术语定义 原则原则:编程时必须坚持的指导思想。规则规则:编程时强制必须遵守的约定。建议建议:编程时必须加以考虑的约定。说明说明:对此原则/规则/建议进行必要的解释。示例示例:对此原则/规则/建议从正、反两个方面给出例子。延伸阅读材料延伸阅读材料:建议进一步阅读的参考材料。1 1 头文件头文件 背景 对于对于C语言来说,头文件的设计体现了大部分的系统设计。语言来说,头文件的设计体现了大部分的系统设计。不合理的头文件布局是编译时间过长的

12、根因,不合理的头文件实际上不合理的设计。术语定义:依赖依赖:本章节特指编译依赖。若x.h包含了y.h,则称作x依赖y。依赖关系会进行传导,如x.h包含y.h,而y.h又包含了z.h,则x通过y依赖了z。依赖将导致编译时间的上升。虽然依赖是不可避免的,也是必须的,但是不良的设计会导致整个系统的依赖关系无比复杂,使得任意一个文件的修改都要重新编译整个系统,导致编译时间巨幅上升。在一个设计良好的系统中,修改一个文件,只需要重新编译数个,甚至是一个文件。某产品曾经做过一个实验,把所有函数的实现通过工具注释掉,其编译时间只减少了不到10%,究其原因,在于A包含B,B包含C,C包含D,最终几乎每一个源文件

13、都包含了项目组所有的头文件,从而导致绝大部分编译时间都花在解析头文件上。某产品更有一个“优秀实践”,用于将.c文件通过工具合并成一个比较大的.c文件,从而大幅度提高编译效率。其根本原因还是在于通过合并.c文件减少了头文件解析次数。但是,这样的“优秀实践”是对合理划分.c文件的一种破坏。大部分产品修改一处代码,都得需要编译整个工程,对于TDD之类的实践,要求对于模块级别的编译时间控制在秒级,即使使用分布式编译也难以实现,最终仍然需要合理的划分头文件、以及头文件之间的包含关系,从根本上降低编译时间。密级:confidentiality level DKBA 2826-2011.5 2011-06-

14、02 华为机密,未经许可不得扩散 Huawei Confidential 第7页,共61页Page 7,Total61 google C+Style Guide1.2 头文件依赖 章节也给出了类似的阐述:若包含了头文件aa.h,则就引入了新的依赖:一旦aa.h被修改,任何直接和间接包含aa.h代码都会被重新编译。如果aa.h又包含了其他头文件如bb.h,那么bb.h的任何改变都将导致所有包含了aa.h的代码被重新编译,在敏捷开发方式下,代码会被频繁构建,漫长的编译时间将极大的阻碍频繁构建。因此,我们倾向于减少包含头文件,尤其是在头文件中包含头文件,以控制改动代码后的编译时间。合理的头文件划分体

15、现了系统设计的思想,但是从编程规范的角度看,仍然有一些通用的方法,用来合理规划头文件。本章节介绍的一些方法,对于合理规划头文件会有一定的帮助。原则原则1.1 1.1 头文件中适合放置接口的声明,不适合放置实现。头文件中适合放置接口的声明,不适合放置实现。说明:头文件是模块(Module)或单元(Unit)的对外接口。头文件中应放置对外部的声明,如对外提供的函数声明、宏定义、类型定义等。内部使用的函数(相当于类的私有方法)声明不应放在头文件中。内部使用的宏、枚举、结构定义不应放入头文件中。变量定义不应放在头文件中,应放在.c文件中。变量的声明尽量不要放在头文件中,亦即尽量不要使用全局变量作为接口

16、。变量是模块或单元的内部实现细节,不应通过在头文件中声明的方式直接暴露给外部,应通过函数接口的方式进行对外暴露。即使必须使用全局变量,也只应当在.c中定义全局变量,在.h中仅声明变量为全局的。延伸阅读材料:C语言接口与实现(David R.Hanson 著 傅蓉 周鹏 张昆琪 权威 译 机械工业出版社 2004年1月)(英文版:C Interfaces and Implementations)原则原则1.2 1.2 头文件应当职责单一头文件应当职责单一。说明:头文件过于复杂,依赖过于复杂是导致编译时间过长的主要原因。很多现有代码中头文件过大,职责过多,再加上循环依赖的问题,可能导致为了在.c中使用一个宏,而包含十几个头文件。示例:如下是某平台定义WORD类型的头文件:#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include 密

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1