华为C++语言通用编程规范.pdf

华为C++语言通用编程规范.pdf

ID:51085965

大小:926.12 KB

页数:66页

时间:2020-03-18

华为C++语言通用编程规范.pdf_第1页
华为C++语言通用编程规范.pdf_第2页
华为C++语言通用编程规范.pdf_第3页
华为C++语言通用编程规范.pdf_第4页
华为C++语言通用编程规范.pdf_第5页
华为C++语言通用编程规范.pdf_第6页
华为C++语言通用编程规范.pdf_第7页
华为C++语言通用编程规范.pdf_第8页
华为C++语言通用编程规范.pdf_第9页
华为C++语言通用编程规范.pdf_第10页
资源描述:

《华为C++语言通用编程规范.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、章节内容0前言目的重点关注约定例外1原则好代码的原则类和函数设计指导原则保证静态类型安全遵循C++ISO标准优先编译时检查错误使用命名空间来限定作用域优先使用C++特性而不是C特性2命名通用命名文件命名函数命名类型命名变量命名宏、常量、枚举命名3格式行宽缩进大括号函数声明和定义函数调用if语句循环语句switch语句表达式变量赋值初始化指针和引用编译预处理空格和空行类4注释注释风格文件头注释函数头注释代码注释5头文件头文件职责头文件依赖6作用域命名空间全局函数和静态成员函数全局变量全局常量和静态成员常量7类构造、拷贝构造、赋值和析构函数继承多重继承重

2、载8函数函数设计内联函数函数参数9C++其常量与初始化表达式类型转换资源分配和释放标准库const的用法异他特性常模板宏10现代代码简洁性和安全性提升智能指针Lambda接口C++特性0前言目的规则并不是完美的,通过禁止在特定情况下有用的特性,可能会对代码实现造成影响。但是我们制定规则的目的__“为了大多数程序员可以得到更多的好处”__,如果在团队运作中认为某个规则无法遵循,希望可以共同改进该规则。参考该规范之前,希望您具有相应的C++基础能力,而不是通过该文档来学习C++。1.了解C++的ISO标准;2.熟知C++的基本语言特性,包括C++03/1

3、1/14/17相关特性;3.了解C++的标准库;重点关注1.约定C++的编程风格,比如命名,排版等。2.C++的模块化设计,如何设计头文件,类,接口和函数。3.C++相关特性的优秀实践,比如常量,类型转换,资源管理,模板等。4.现代C++的优秀实践,包括C++11/14/17中可以提高代码可维护性,提高代码可靠性的相关约定。约定规则:编程时必须遵守的约定(must)建议:编程时应该遵守的约定(should)本规范适用通用C++标准,如果没有特定的标准版本,适用所有的版本(C++03/11/14/17)。例外无论是’规则’还是’建议’,都必须理解该条目

4、这么规定的原因,并努力遵守。但是,有些规则和建议可能会有例外。在不违背总体原则,经过充分考虑,有充足的理由的前提下,可以适当违背规范中约定。例外破坏了代码的一致性,请尽量避免。’规则’的例外应该是极少的。下列情况,应风格一致性原则优先:修改外部开源代码、第三方代码时,应该遵守开源代码、第三方代码已有规范,保持风格统一。某些特定领域,优先参考其行业规范。1原则好代码的原则我们参考KentBeck的简单设计四原则来指导我们的如何写出优秀的代码,如何有效地判断我们的代码是优秀的。1.通过所有测试(Passesitstests)2.尽可能消除重复(Minim

5、izesduplication)3.尽可能清晰表达(Maximizesclarity)4.更少代码元素(Hasfewerelements)5.以上四个原则的重要程度依次降低。这组定义被称做简单设计原则。第一条强调的是外部需求,这是代码实现最重要的;第二点就是代码的模块架构设计,保证代码的正交性,保证代码更容易修改;第三点是代码的可阅读性,保证代码是容易阅读的;最后一点才是保证代码是简洁的,在简洁和表达力之间,我们更看重表达力。类和函数设计指导原则C++是典型的面向对象编程语言,软件工程界已经有很多OOP原则来指导我们编写大规模的,高可扩展的,可维护性

6、的代码:-高内聚,低耦合的基本原则-SOLID原则-迪米特法则-“Tell,Don’task”原则-组合/聚合复用原则保证静态类型安全我们希望C++应该是静态类型安全的,这样可以减少运行时的错误,提高代码的健壮性。但是由于C++的下面的特性存在,会破坏C++静态类型安全,我们针对这部分特性要仔细处理。-unions联合体-类型转换cast-缩窄转换narrowingconversions-类型退化typedecay-范围错误rangeerrors-void*类型指针我们可以通过约束这些特性的使用,或者使用C++的新特性,比如variant(C++17

7、),GSL的span,narrow_cast等来解决这些问题,提高C++代码的健壮性。遵循C++ISO标准希望通过使用ISOC++标准的特性来编写C++代码,对于ISO标准中未定义的或者编译器实现的特性要谨慎使用,对于GCC等编译器的提供的扩展特性也需要谨慎使用,这些特性会导致代码的可移植性比较差。注意:如果模块中需要使用相关的扩展特性来,那么尽可能将这些特性封装成独立的接口,并且可以通过编译选项关闭或者编译这些特性。对于这些扩展特性的使用,请模块制定特性编程指南来指导这些特性的使用。优先编译时检查错误通过编译器来优先保证代码健壮性,而不是通过编写错

8、误处理代码来处理编译就可以发现的异常,比如:•通过const来保证数据的不变性,防止数据被无意修改。•通过g

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。