2013编程规.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C/C++编程规范本规范制定的目的是通过详阐述如何进行C编码来减少团队开发中给项目管理带来的复杂性,增强代码的一致性,以利于项目成员间和后期维护中的交流。保持统一编程风格,意味着可以轻松根据“模式匹配”规则推断各种符号的含义。创建通用的、必要的习惯用语和模式可以使代码更加容易理解,同时我们遵循一致性原则,尽量不创建独特的编程风格。本规范的使用者对C应非常熟悉。一、头文件通常,每一个.c文件(C的源文件)都有一个对应的.h文件(头文件),也有一些例外,如单元测试代码和只包含main()的.c文件。正确使用头文件可增强代码在可读性、文件大小和性能。下面的规则将引导你规避使用头文件时的各种麻烦。⒈ #define保护⑴ 为保证唯一性,头文件的命名应基于其所在项目源代码树的全路径命名格式为:PROJECT_PATH_FILE_H_ 例如,项目foo中的头文件foo\src\bar\baz.h⑵ 所有头文件都应该使用#ifndef防止头文件被多重包含(multiple inclusion)。例如,#ifndef FOO_BAR_BAZ_H_ #define FOO_BAR_BAZ_H_ ...#endif // FOO_BAR_BAZ_H_避免多重包含是学习编程时最基本的要求⒉ 包含文件的名称及次序⑴ 包含文件的排列次序C系统库其他库的.h项目内的.h。将包含次序标准化可增强程序的可读性、有效减少隐藏依赖避免隐藏依赖(hidden dependencies,隐藏依赖主要是指包含的文件编译)。⑵ 项目内头文件应按照项目源代码目录树结构排列,并且避免使用Windows的文件路径.(当前目录)和..(父目录)例如,google-awesome-project\src\base\logging.h #include base\logging.h dir\foo.c的主要作用是执行或测试dir2/foo2.h的功能。对应的.c和.h文件,通常位于相同目录下。⒊ 函数参数顺序(Function Parameter Ordering)定义函数时,参数顺序为:输入参数在前,输出参数在后。C函数参数分为输入参数和输出参数两种,有时输入参数也会输出(注:值被修改时)。这一点并不是必须遵循的规则,输入/输出两用参数(通常是结构体变量)混在其中,会使得规则难以遵循。二、作用域作用域的使用,除了考虑名称污染、可读性之外,主要是为降低耦合度,提高编译、执行效率。⒈ 局部变量(Local Variables)⑴ 将函数变量尽可能置于最小作用域内,在声明变量时将其初始化我们提倡在尽可能小的作用域中声明变量,离第一次使用越近越好。这使得代码易于阅读,易于定位变量的声明位置、变量类型和初始值。C可正确执行for (int i = 0; i 10; ++i)(i的作用域仅限for循环),因此其他for循环中可重用i。if和while等语句中可同样使用。⑵ 使用初始化代替声明+赋值的方式。int i;i = f(); // 坏——初始化和声明分离int i = g(); // 好——初始化时声明⒉ 全局变量(Global Variables)⑴ 尽量不用全局函数和全局变量,考虑作用域的限制,尽量单独形成编译单元;⑵ 永远不要使用函数返回值初始化全局发量。三、C特性⒈编写短小函数(Write Short Functions)长函数有时是恰当的,因此对于函数长度并没有严格限制。更倾向于选择短小、凝练的函数,函数体尽量短小、紧凑,功能单一。如果函数超过40行,可以考虑在不影响程序结构的情冴下将其分割一下。 即使一个长函数现在工作的非常好,一旦有人对其修改,有可能出现新的问题,甚至导致难以发现的bugs。使函数尽量短小、简单,便于他人阅诺和修改代码。在处理代码时,你可能会发现复杂的长函数,不要害怕修改现有代码:如果证实这些代码使用、调试困难,或者你需要使用其中的一小块,考虑将其分割为更加短小、易于管理的若干函数。⒉ 声明次序(Declaration Order)⑴ typedefs和enums⑵ 常量(defines)⑶ 函数⑷ 变量⒊ 引用参数如果函数需要修改变量的值,形参(parameter)必须为指针。⒋ 前置自增和自减(Preincrement and Predecrement) ⑴ 能用前置自增/减不用后置自增/减⑵ 对于迭代器和其他模板对象使用前缀形式(++i)的自增、自减运算符⑶ 定义对于变量在自增(++i或i++)或自减(--i或i--)后表达式的值又没有没用到的情冴下,需要确定到底是使用前置还是后置的自增自减。 ⑷ 优点不考虑返回值的话,前置自增(++i)通常要比后置自增(i++)效率更高,因为后置的自增自减需要对表达式的值i进行一次拷贝,如果i是迭代器或其他非数

文档评论(0)

mFZsmeKTTS + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档