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. 牛客挑战赛48E-速度即转发【带修莫队,分块】

    正题 题目链接:https://ac.nowcoder.com/acm/contest/11161/E 题目大意 给出\(n\)个数字的一个序列,\(m\)个操作. 给出\(l,r,k\),求一个最大 ...

  2. SpringBoot 添加本地 jar 文件

    前言 有时候我们在项目中,会用到一些本地 jar 包文件,比如隔壁公司自己打包的: 此时无法从maven远程仓库拉取: 那么我们可以考虑把 jar 文件安装到本地 maven 库中,然后再添加依赖. ...

  3. 踩坑系列《八》解决Win10没有找到Hyper-v的错误

    最近要安装docker,所以得开启Hyper属性面板,找了下,发现电脑上没有看到该属性. 在这之前,得先判断,你电脑是不是支持Hyper,打开cmd窗口,输入systeminfo 看看最下面Hyper ...

  4. 在 ASP.NET Core 中自动启用 CAP 事务

    本篇文章旨在描述如何在 ASP.NET Core项目中并以一种简便的方式启用CAP事务,因为在我们的示例中都是直接演示比较直观的方式,没有进行封装,有些初学者同学不太会,找到问我如何封装,本篇文章主要 ...

  5. redis 5.0.12 install

    redis 5.0.12 install ## check directory ls -l /XXXXXXX ##create dir mkdir -p /XXXXXXX/dataredis mkdi ...

  6. mysql数据备份及恢复详细操作

    一.数据库数据备份 1.全备 BakDir=/backup/full #创建全备目录 LogFile=/backup/full/bak.log #创建备份日志 Date=`date +%Y%m%d` ...

  7. nGrinder 参数使用

    背景: 性能测试中为了更加接近真实模拟现实应用,对于提交的信息每次都需要提交不同的数据,或使用不同的值,最为典型的就是登录时的账号. 性能测试工具需要提供动态参数化功能,如商业化的LoadRunner ...

  8. 使用Mybatis的一些基本配置及Mybatis与数据库交互测试验证

    1.简介 什么是MyBatis? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.My ...

  9. Java(11)方法详细介绍

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201577.html 博客主页:https://www.cnblogs.com/testero ...

  10. 内网渗透DC-5靶场通关

    个人博客地址:点我 DC系列共9个靶场,本次来试玩一下一个 DC-5,只有一个flag,下载地址. 下载下来后是 .ova 格式,建议使用vitualbox进行搭建,vmware可能存在兼容性问题.靶 ...