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. CF622F-The Sum of the k-th Powers【拉格朗日插值】

    正题 题目链接:https://www.luogu.com.cn/problem/CF622F 题目大意 给出\(n,k\),求 \[\sum_{i=1}^ni^k \] 解题思路 很经典的拉格朗日差 ...

  2. mysql的一次意外

    打开navcat连接本地mysql数据库的时候说mysql服务无法连接,切换到cmd用命令行来启动报错,发生系统错误5,查看百度,需用管理员权限运行, 用管理员运行依旧不好使 C:\WINDOWS\s ...

  3. 5-基本的sql查询以及函数的使用

    基本SQL查询语句以及函数的使用 格式元素 描述 YYYY 四位的年份 MONTH 月份的英文全称 MON 月份的英文简写 MM 月份的数字表示 DD 日起的1-31数字表示 D 星期几的数字表示1- ...

  4. 这几种Java异常处理方法,你会吗?

    摘要:我们在软件开发的过程中,任何语言的开发过程中都离不开异常处理. 本文分享自华为云社区<Java异常处理学习总结>,作者: zekelove . 我们在软件开发的过程中,任何语言的开发 ...

  5. node二进制安装

    你可能因为重装系统node的npm不管用, 但是node管用, 我不知道为什么, 但是 二进制安装就好了 管他那么多 下面这些网址你就可以了 https://blog.csdn.net/wocaoni ...

  6. Java(30)集合五Set

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

  7. OutOfMemoryException异常解析

    一.概述 在国庆休假快结束的最后一天晚上接到了部门老大的电话,某省的服务会出现崩溃问题.需要赶紧修复,没错这次的主角依旧是上次的"远古项目"没有办法同事都在休假没有人能帮忙开电脑远 ...

  8. jenkins的安装、配置使用

    1.jenkins的使用 (1).需要先下载安装JDK 配置jdk的环境 变量JAVA_HOME的值是 jdk 的安装位置, 然后下载安装tomcat 安装好了之后,打开tomcat下的bin文件夹, ...

  9. OO面向对象第三次作业总结

    面向对象第三次作业总结 一.JML基础梳理及工具链 注释结构 行注释://@annotation 块注释:/*@ annotation @*/ 两种注释都是放在被注释部分上面. 常见表达式 原子表达式 ...

  10. FastAPI 学习之路(三十四)数据库多表操作

    之前我们分享的是基于单个的数据库表的操作,我们在设计数据库的时候也设计了跨表,我们可以看下数据库的设计. class User(Base): __tablename__ = "users&q ...