1.排版

1.1 程序块要采用缩进风格编写, 缩进的空格数为4个。(说明: 对于由开发工具自动生成的代码可以有不一致)
1.2 相对独立的程序块之间、变量说明之后必须加空行。
1.3 循环、判断等语句中若有较长的表达式或语句, 则要进行适应的划分, 长表达式要在低优先级操作符处划分新行, 操作符放在新行之首。
1.4 若函数或过程中的参数较长, 则要进行适当的划分。
1.5 不允许把多个短语句写在一行中, 即一行只写一条语句。
1.6 if、for、do、while、case、switch、default等语句自占一行, 且if、for、do、while等语句的执行语句部分无论多少都要加括号{}。
1.7 对齐只使用空格键, 不使用TAB键。
1.8 函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格, case 语句下的情况处理语句也要遵从语句缩进要求。
1.9 程序块的分界符(如C/C++ 语言的大括号‘{’ 和‘}’ )应各独占一行并且位于同一列, 同时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、switch、case 语句中的程序都要采用如上的缩进方式。
1.10 在两个以上的关键字、变量、常量进行对等操作时, 它们之间的操作符之前、之后或者前后要加空格; 进行非对等操作时, 如果是关系密切的立即操作符(如->), 后不应加空格。(说明: 采用这种松散方式编写代码的目的是使代码更加清晰。)
注:(1)由于留空格所产生的清晰性是相对的, 所以, 在已经非常清晰的语句中没有必要再留空格, 如果语句已足够清晰则括号内侧(即左括号后面和右括号前面)不需要加空格, 多重括号间不必加空格, 因为在C/C++语言中括号已经是最清晰的标志了。
  (2)在长语句中, 如果需要加的空格非常多, 那么应该保持整体清晰, 而在局部不加空格。给操作符留空格时不要连续留两个以上空格。

2.注释

2.1 一般情况下, 源程序有效注释量必须在20%以上。(说明: 注释的原则是有助于对程序的阅读理解, 在该加的地方都加了, 注释不宜太多也不能太少, 注释语言必须准确、易懂、简洁。)

2.2 说明性文件(如头文件.h 文件、.inc 文件、.def 文件、编译说明文件.cfg 等)头部应进行注释, 注释必须列出: 版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等, 头文件的注释中还应有函数功能简要说明。
2.3 源文件头部应进行注释, 列出: 版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等。
2.4 函数头部应进行注释, 列出: 函数的目的/ 功能、输入参数、输出参数、返回值、调用关系(函数、表)等
示例: 下面这段函数的注释比较标准, 当然, 并不局限于此格式, 但上述信息建议要包含在内。
Function: // 函数名称
Description: // 函数功能、性能等的描述
Calls: // 被本函数调用的函数清单
Called By: // 调用本函数的函数清单
Table Accessed: // 被访问的表(此项仅对于牵扯到数据库操作的程序)
Table Updated: // 被修改的表(此项仅对于牵扯到数据库操作的程序)
Input: // 输入参数说明, 包括每个参数的作用、取值说明及参数间关系
Output: // 对输出参数的说明
Return: // 函数返回值的说明
2.5 边写代码边注释, 修改代码同时修改相应的注释, 以保证注释与代码的一致性。不再有用的注释要删除。
2.6 注释的内容要清楚、明了, 含义准确, 防止注释二义性。
2.7 避免在注释中使用缩写, 特别是非常用缩写
2.8 注释应与其描述的代码相近, 对代码的注释应放在其上方或右方(对单条语句的注释)相邻位置, 不可放在下面, 如放于上方则需与其上面的代码用空行隔开。
2.9 对于所有有物理含义的变量、常量, 如果其命名不是充分自注释的, 在声明时都必须加以注释, 说明其物理含义。变量、常量、宏的注释应放在其上方相邻位置或右方。
2.10 数组、结构、类、枚举等) , 如果其命名不是充分自注释的, 必须加以注释。对数据结构的注释应放在其上方相邻位置, 不可放在下面; 对结构中的每个域的注释放在此域的右方。
2.11 全局变量要有较详细的注释, 包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。

2.12 注释与所描述内容进行同样的缩排。
2.13 将注释与其上面的代码用空行隔开。
2.14 函数的头部应进行注释,列出函数的功能、目的、输入输出参数、返回值、调用关系(表、函数)等
2.15 对变量的定义和分支语句(条件分支、循环语句等)必须编写注释。
2.16 对于switch语句下的case语句, 如果因为特殊情况需要处理完一个case后进入下一个case处理, 必须在该case语句处理完、下一个case语句前加上明确的注释。

3.标识符命名
3.1 标识符的命名要清晰、明了, 有明确含义, 同时使用完整的单词或大家基本可以理解的缩写, 避免使人产生误解。(说明: 较短的单词可通过去掉“元音”形成缩写; 较长的单词可取单词的头几个字母形成缩写; 一些单词有大家公认的缩写。)
示例: 如下单词的缩写能够被大家基本认可。
temp可缩写为 tmp; 临时
flag可缩写为 flg; 标志
statistic可缩写为 stat ; 统计
increment可缩写为 inc; 增量
message可缩写为 msg; 消息
3.2 命名中若使用特殊约定或缩写, 则要有注释说明。(说明: 应该在源文件的开始之处, 对文件中所使用的缩写或约定, 特别是特殊的缩写, 进行必要的注释说明。)
3.3 自己特有的命名风格, 要自始至终保持一致, 不可来回变化。(说明: 个人的命名风格, 在符合所在项目组或产品组的命名规则的前提下, 才可使用。即命名规则中没有规定到的地方才可有个人命名风格。)

3.4 对于变量命名, 禁止取单个字符(如i、j、k… ), 建议除了要有具体含义外, 还能表明其变量类型、数据类型等, 但i、j、k 作局部循环变量是允许的。
说明: 变量, 尤其是局部变量, 如果用单个字符表示, 很容易敲错(如i写成j), 而编译时又检查不出来, 有可能为了这个小小的错误而花费大量的查错时间。

3.5 命名规范必须与所使用的系统风格保持一致, 并在同一项目中统一, 比如采用UNIX的全小写加下划线的风格或大小写混排的方式, 不要使用大小写与下划线混排的方式, 用作特殊标识如标识成员变量或全局变量的m_ 和g_ , 其后加上大小写混排的方式是允许的

4.可读性
4.1 注意运算符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级。
4.2 避免使用不易理解的数字, 用有意义的标识来替代。涉及物理状态或者含有物理意义的常量, 不应直接使用数字, 必须用有意义的枚举或宏来代替。

5.变量、结构
5.1 去掉没必要的公共变量。
说明: 公共变量是增大模块间耦合的原因之一, 故应减少没必要的公共变量以降低模块间的耦合度。
5.2 仔细定义并明确公共变量的含义、作用、取值范围及公共变量间的关系。
说明: 在对变量声明的同时, 应对其含义、作用及取值范围进行注释说明, 同时若有必要还应说明与其它变量的关系。

6.函数、过程
6.1 对所调用函数的错误返回码要仔细、全面地处理
6.2 明确函数功能, 精确(而不是近似)地实现函数设计
6.3 编写可重入函数时, 应注意局部变量的使用(如编写C/C++ 语言的可重入函数时, 应使用auto 即缺省态局部变量或寄存器变量)
说明: 编写C/C++语言的可重入函数时, 不应使用static局部变量, 否则必须经过特殊处理, 才能使函数具有可重入性。

 

《数学之美》感想

书中提到了很多数学模型都是在不断的进化、改良、升级,也就是说有人不断地在做优化,会有不断更好的模型、更新的技术出现,跟得上现代技术的发展是非常重要的,所以感觉作为一个读软件工程专业的人来说,不断地学习不断地提升自己是非常重要的,也是应该做的。

华为C/C++编码规范+《数学之美》感想的更多相关文章

  1. 代码规范 & 数学之美读后感

    代码规范链接:https://zh-google-styleguide.readthedocs.io/en/latest/contents/ 数学之美读后感 一开始看名字我以为是一本讲数学是怎么发展的 ...

  2. 华为C语言编程规范

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

  3. 资料推荐--Google Java编码规范

    之前已经推荐过Google的Java编码规范英文版了: http://google-styleguide.googlecode.com/svn/trunk/javaguide.html 虽然这篇文章的 ...

  4. 推荐的PHP编码规范

    推荐的PHP编码规范 发布时间: 2014-05-7 浏览次数:2754 分类: PHP教程 推荐的PHP编码规范 一 编辑器设置 1. 使用Tab缩进,不要使用空格 鉴于很多编辑器在保存文件时会自动 ...

  5. 《阿里巴巴Android编码规范》阅读纪要(一)

    版权声明:本文出自汪磊的博客,转载请务必注明出处. 2月28日阿里巴巴首次公开内部安卓编码规范,试想那么多业务线,开发人员,没有一套规范管理起来是多么麻烦,以下是个人阅读Android基本组件部分过程 ...

  6. Python编码规范(PEP8)

    Introduction 介绍 本文提供的Python代码编码规范基于Python主要发行版本的标准库.Python的C语言实现的C代码规范请查看相应的PEP指南1. 这篇文档以及PEP 257(文档 ...

  7. python经典书籍推荐:python编码规范

    目录INF-qa Python 编码规范................................................................................ ...

  8. Python PEP 8 编码规范中文版

    原文链接:http://legacy.python.org/dev/peps/pep-0008/ 转发链接:https://blog.csdn.net/ratsniper/article/detail ...

  9. OWASP安全编码规范快速参考指南

    0x00 原则 概览 开发安全的软件需要对安全原则有基本的了解.虽然对于安全原则的全面评估超出了本指南的范围,但是我们还是提供了一个快速的概览.软件安全的目标是要维护信息资源的 保密性 ,  完整性 ...

随机推荐

  1. P4201-[NOI2008]设计路线【结论,树形dp】

    正题 题目链接:https://www.luogu.com.cn/problem/P4201 题目大意 给出\(n\)个点的一棵树开始所有边都是白色,选出若干条没有公共点的路径将上面所有边变为黑色. ...

  2. python测试开发工具库汇总(转载)

    Web UI测试自动化 splinter - web UI测试工具,基于selnium封装. selenium - web UI自动化测试. mechanize- Python中有状态的程序化Web浏 ...

  3. Sentry 监控 - Snuba 数据中台架构简介(Kafka+Clickhouse)

    系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...

  4. 11.5.1 LVS-DR 实验

    lvs-server VIP:10.211.55.99 DIP:10.211.55.23 负载均衡器   rs01 RIP:10.211.55.24 后端服务器   rs02 RIP:10.211.5 ...

  5. SAE助力南瓜电影7天内全面Severless

    作者:李刚(寻如),阿里云解决方案架构师 南瓜电影APP是国内领先的专注于影视精品化运营的垂直类视频产品,在移动互联网.IPTV.OTT等客户端,面向广大中产阶级精英群体,提供有异于院线及其他视频平台 ...

  6. 用最简单的方式理解 IoC 控制反转

    思想引入 假设一个系统原先只设定有一个默认的方法去完成业务,这里举例这个原先设定开发的是 UserDaoImpl(可能有些牵强,但是不影响我们对逻辑的理解)这样一个业务. 后来有一天,需求变了,业务流 ...

  7. java设计模式_工厂模式

    关于设计模式 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结,是一种设计思维,使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证 ...

  8. MIPS流水线技术

    华中科技大学 - 计算机硬件系统设计 单周期指令运行动态 Instruction Fetch Instruction Decode Execution MEM Write Back 单周期时空图 设耗 ...

  9. 如何访问位于内网的Ubuntu主机

    如何访问位于内网的Ubuntu主机 内网主机为Ubuntu桌面版 内网主机Ubuntu字符串界面版 SSH远程主机管理工具推荐 SSH远程文件访问工具推荐 如何访问位于内网的Ubuntu主机 内网主机 ...

  10. [no_code]OCR表格处理——技术规格说明书

    项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 技术规格说明书 我们在这个课程的目标是 远程协同工作,采用最新技术开发软件 这个作业在哪个具体方面 ...