伴随 C/C++ 语言高度的灵活性和广泛的适用性,产生了面向语言、行业、企业等不同适用范围的编程规范,各有特点和侧重,本文分享如下具有典型意义的规范体系:

Google C++ Style Guide

Google C++ Style Guide,[中文版],简称 GSG,谷歌的 C++ 编程规范,在国内有较大影响力,是企业级规范,对代码的具体样式有细致的规定,可直接采用。

由于历史原因,GSG 较为保守,通过抑制语言特性以达到规避风险的目的。在早期尚未形成所谓“现代”编程思想的时候,此规范就已经面世并发挥作用了,其中的某些观点可能与官方不符,比如 C++ 创始人曾一度认为用常数 0 表示空指针比用 NULL 更好,而 GSG 则认为用 NULL 更好,但历史表明 GSG 的观点是正确的,C++11 引入了专属符号 nullptr 以表示空指针的值。

GSG 是实践经验的总结,也在不断发展,目前已适应 C++17,对提升代码可维护性有很高的参考价值。

C++ Core Guidelines

C++ Core Guidelines,[中文版],简称 CCG,是 C++ 创始人对 C++ 代码编写的宏观指导,属于语言级规范体系,全面地阐述了现代 C++ 编程思想,以规则条款的形式明确地指出哪些是要避免的,哪些是值得提倡的,具有权威性,适合开发者学习。

由于其篇幅宏大细节繁多,可在相应代码审计工具的支持下作为企业的编程规范和审计依据。

SEI CERT Coding Standards

SEI CERT Coding Standards,简称 CERT,是 CMU(Carnegie Mellon University)软件工程研究所(SEI)发布的 C/C++ 编码规范,专注于安全问题,适合与其他规范配合使用。

CERT 提供了较为全面的安全措施,如敏感信息的保护、注入或劫持的预防等等是值得所有开发人员学习的。

MISRA C/C++

MISRA C/C++,是由英国汽车产业软件可靠性协会(Motor Industry Software Reliability Association)提出的 C/C++ 语言开发标准,在嵌入式开发领域有较高认可度,是行业级规范,企业可直接采用,但需购买相关文档或技术支持。

MISRA 调强代码静态结构的合规性,规则较为严格,梳理了标准中“未定义”、“未声明”、“实现定义”的情况,总结可导致不良后果的代码形式并以此为规范依据,当前发行版本遵循 C99 和 C++03 标准。

High Integrity C++ Coding Standard

High Integrity C++ Coding Standard,历史悠久的 C/C++ 规范体系,现归属于 Perforce Software, Inc.,提供独特而有效的方法提升代码质量并规避风险,被多种知名规范参考引用,而且还提供合规性审计软件,但并不侧重于安全问题,适合与 SEI CERT 等安全类规范配合使用。

华为 C&C++ 语言安全编程规范

华为 C&C++ 语言安全编程规范,阐述了编程时必须面对的最关键的 8 类问题(资源、安全、敏感信息等),适合企业直接采用。

此规范较为简练便于记忆,所以适合在 Code Review 时人工对代码展开相关检查和讨论,由于不是以网站形式发布的,这里就不提供链接了,可自行搜索相关文档。

腾讯代码安全指南

腾讯代码安全指南,直接面向各种库或 API 的使用,阐明存在的安全问题和解决方法,有较高的实用价值,除了 C 和 C++ 语言,还提供对 Java、Javascript、Go、Python 等语言的编程指导。

360 安全规则集合

360 安全规则集合,融汇多种编程理念,提供适用于不同场景的规则供用户选取,适用于桌面、服务端及嵌入式软件系统,也属于语言级规范体系。

安全规则集合侧重违规代码的量化界定,严格遵循 C11 和 C++11 标准,并兼顾 C18、C++17 以及历史标准,可为不同方向的开发团队提供灵活而统一的规范指导。

详解 C/C++ 各大编程规范相关推荐

  1. shell脚本详解(一)——Shell编程规范与变量

    详解Shell编程规范与变量 一.Shell脚本概述 1.shell脚本的概念 2.shell脚本应用场景 3.shell的作用--命令翻译器,"翻译官" 二.用户的登录shell ...

  2. Spark RDD 论文详解(三)Spark 编程接口

    前言 本文隶属于专栏<1000个问题搞定大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见1000个问题搞定大数据技 ...

  3. 详解智能交通应用大数据“三重门”

    文章讲的是详解智能交通应用大数据"三重门",武汉市悬在路口立杆上的金属小盒子--超级电子眼3个月抓了13万起交通违法,逆行.压线.套牌一眼识别,并能自动报警. 只需10秒,重庆市凭 ...

  4. mapreduce工作流程_详解MapReduce中的五大编程模型

    前言 我们上一节讲了关于 MapReduce 中的应用场景和架构分析,最后还使用了一个CountWord的Demo来进行演示,关于MapReduce的具体操作.如果还不了解的朋友可以看看上篇文章:[初 ...

  5. python 写入excel 日期_详解:Python实现大数据收集至excel的思路大牛分享(建议收藏)...

    一.在工程目录中新建一个excel文件 二.使用python脚本程序将目标excel文件中的列头写入,本文省略该部分的code展示,可自行网上查询 三.以下code内容为:实现从接口获取到的数据值写入 ...

  6. 万字HBase详解带你畅游大数据的海豚湾

    写在前面:我是「且听风吟」,目前是某上市游戏公司的大数据开发工程师,热爱大数据开源技术,喜欢分享自己的所学所悟,现阶段正在从头梳理大数据体系的知识,以后将会把时间重点放在Spark和Flink上面. ...

  7. 详解MapReduce中的五大编程模型

    前言 我们上一节讲了关于 MapReduce 中的应用场景和架构分析,最后还使用了一个CountWord的Demo来进行演示,关于MapReduce的具体操作.如果还不了解的朋友可以看看上篇文章:初识 ...

  8. 《力荐收藏》Hadoop全套组件安装详解——带你走进大数据的深渊

    目录 Hadoop部署 部署组件 一.VMware部署安装 二.Ubuntu18.04.5版本的部署安装 ​ 三.安装VMware Tools 四.配置ssh免密登陆 五.Java环境安装 Hadoo ...

  9. 中台架构详解(上) | 大咖说中台

    作者 | 耿立超 责编 | 晋兆雨 来源 | <大数据平台架构与原型实现:数据中台建设实战> 中台打破了应用系统的壁垒,从企业全局梳理和规划业务程,重构了组织架构.业务架构与IT 架构. ...

最新文章

  1. Linux 下 的 cc 和 gcc
  2. java bmp信息隐藏_BMP图像信息隐藏及检测
  3. 关于DNS区域查询,DNS字典爆破,以及查询文件问题
  4. 2008_11_05_星期三
  5. Java用户修改密码
  6. Java 对象的序列化
  7. DCMTK3.6.0(MD支持库)安装说明
  8. 一个 Accept-Encoding 引发的 requests 爬虫乱码问题
  9. 向日葵显示不能连接服务器,手机向日葵远程连接服务器
  10. 基于python的狗屁不通观后感生成器 2.0
  11. 不要再说Qt教程少了
  12. VPB安装过程记录-20200310
  13. c++正方形的面积源代码
  14. yota3墨水屏调节对比度_【YotaPhoneYOTA3评测】屏幕:背面墨水屏玩法太多样_YotaPhone YOTA 3_手机评测-中关村在线...
  15. 前端面试vue (上)
  16. 高等数学:第十二章 微分方程(3)高阶线性微分方程、二阶常系数齐次线性微分方程
  17. 不激活Win10调整任务栏样式
  18. java-net-php-python-java民宿平台信息管理系统计算机毕业设计程序
  19. 你的微信消息是怎么发出去的?
  20. 联想计算机怎么添加打印机,联想3510打印机驱动怎么装 联想3510打印机驱动安装教程【详解】...

热门文章

  1. 苹果支付验证回执单相关错误码
  2. 【IPv6】NS,NA 报文学习
  3. [题解][Codeforces 1139A~1139F]Codeforces Round #548 (Div. 2) 简要题解
  4. 解决耳机插在主机上没有声音的问题
  5. Jquery实现超酷的时间轴特效
  6. 5G NR preamble生成原理
  7. HTML5期末大作业:动漫网站设计——迪斯尼公主(6个页面) HTML+CSS+JavaScript 动漫网页HTML代码 学生网页课程设计期末作业下载 动漫大学生网页设计制作成
  8. 咬断防盗绳偷 iPhone,月入万元不是梦
  9. 创业失败那天我在做什么
  10. MT6765 datasheet手册,MT6765参考设计,MT6765芯片资料