来吧!各大厂知名规范体系~ 各有特点各有侧重~

Google C++ Style Guide

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

由于历史原因,GSG 较为保守,通过抑制语言特性以达到规避风险的目的。在早期尚未形成所谓“现代”编程思想的时候,此规范就已经面世并发挥作用了,其中的某些观点可能与 C++ 官方不符,比如 C++ 创始人曾一度认为用常数 0 表示空指针比用 NULL 更好,而 GSG 的观点与之相反,但历史表明 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. 3dTiles 数据规范详解[1] 介绍

    版权:转载请带原地址.https://www.cnblogs.com/onsummer/p/12799366.html @秋意正寒 Web中的三维 html5和webgl技术使得浏览器三维变成了可能. ...

  2. java并发编程 | 锁详解:AQS,Lock,ReentrantLock,ReentrantReadWriteLock

    原文:java并发编程 | 锁详解:AQS,Lock,ReentrantLock,ReentrantReadWriteLock 锁 锁是用来控制多个线程访问共享资源的方式,java中可以使用synch ...

  3. php为什么需要异步编程?php异步编程的详解(附示例)

    本篇文章给大家带来的内容是关于php为什么需要异步编程?php异步编程的详解(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 我对 php 异步的知识还比较混乱,写这篇是为了 ...

  4. JavaScript面向对象编程—this详解

      this详解 作者的话 在JavaScriptOPPt面向对象编程中,this这位老大哥,相信大家不会陌生.大家在遇到this时,很多朋友难免会有个疑问:"这个this是什么,它到底指向 ...

  5. java网络编程(TCP详解)

    网络编程详解-TCP 一,TCP协议的特点              面向连接的协议(有发送端就一定要有接收端)    通过三次连接握手建立连接 通过四次握手断开连接 基于IO流传输数据 传输数据大小 ...

  6. java网络编程(UDP详解)

    UDP详解 一,TCP/IP协议栈中,TCP协议和UDP协议的联系和区别? 联系: TCP和UDP是TCP/IP协议栈中传输层的两个协议,它们使用网络层功能把数据包发送到目的地,从而为应用层提供网络服 ...

  7. MapReduce编程模型详解(基于Windows平台Eclipse)

    本文基于Windows平台Eclipse,以使用MapReduce编程模型统计文本文件中相同单词的个数来详述了整个编程流程及需要注意的地方.不当之处还请留言指出. 前期准备 hadoop集群的搭建 编 ...

  8. Java Stream函数式编程图文详解(二):管道数据处理

    一.Java Stream管道数据处理操作 在本号之前发布的文章<Java Stream函数式编程?用过都说好,案例图文详解送给你>中,笔者对Java Stream的介绍以及简单的使用方法 ...

  9. Javascript模块化编程之CommonJS,AMD,CMD,UMD模块加载规范详解

    JavaSript模块化 在了解AMD,CMD规范前,还是需要先来简单地了解下什么是模块化,模块化开发?     模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问 题进行系 ...

随机推荐

  1. MGR的gtid_executed不连续的问题分析

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 1.问题描述 在做MGR测试的时候偶尔遇到gtid_executed事务ID不连续的问题,但是并不影响数据库的正常运行.现 ...

  2. 你有对象类,我有结构体,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang结构体(struct)的使用EP06

    再续前文,在面向对象层面,Python做到了超神:万物皆为对象,而Ruby,则干脆就是神:飞花摘叶皆可对象.二者都提供对象类操作以及继承的方式为面向对象张目,但Go lang显然有一些特立独行,因为它 ...

  3. 【常见】CSS3进度条Loading动画

    现在,GIF 格式的进度条已经越来越少,CSS 进度条如雨后春笋般涌现.CSS3的崛起,更使得动态效果得以轻松实现,未来,必定是CSS3的天下,所以今天我就来分享一下几个常见的CSS3进度条Loadi ...

  4. Android平台RTMP/RTSP播放器开发系列--解码和绘制

    本文主要抛砖引玉,粗略介绍下Android平台RTMP/RTSP播放器中解码和绘制相关的部分(Github). 解码 提到解码,大家都知道软硬解,甚至一些公司觉得硬解码已经足够通用,慢慢抛弃软解了,如 ...

  5. KingbaseES V8R3集群运维案例之---主库系统down failover切换过程分析

    ​ 案例说明: KingbaseES V8R3集群failover时两个cluster都会触发,但只有一个cluster会调用脚本去执行真正的切换流程,另一个有对应的打印,但不会调用脚本,只是走相关的 ...

  6. 这里聊聊扫地机的 IOT 开发

    以下内容为本人的著作,如需要转载,请声明原文链接微信公众号「englyf」https://www.cnblogs.com/englyf/p/16663833.html 消费者使用扫地机通常的方式是通过 ...

  7. windows清理必看

    清理缓存 代码如下 介绍此文件夹都是缓存文件全选删除即可 ctrl+A全选shift+del强制删除(不会添加到回收站) %temp% 找到C盘右击属性选择想要删除的文件进行清理即可 清理完点击清理系 ...

  8. TextView 中文本内容换行

    TextView 中文本内容换行 首先如图所示,我的第一栏围城的书名和书的介绍是在同一行 但是我想让书名和书的介绍分开个站一行 这时我只要在我的数组文本中的文本用 "\n" 就可以 ...

  9. 【pkuwc2018】随机算法

    我们考虑用状压dp来解决这一道题 设$f[i][S]$表示当前排列的前i位所构成的最大独立集恰好为S的方案数 我们考虑用$f[i][S]$推出$f[i+1][S']$的值 那么我们有两种扩展的方法,一 ...

  10. 1 Java内存区域管理

    目录 1 关于自动内存管理 2 运行时数据区域 2.1 程序计数器 2.2 虚拟机栈 2.2.1 局部变量表 2.2.2 操作数栈 2.3 本地方法栈 2.4 堆 2.5 方法区 2.5.1 运行时常 ...