各大厂 C/C++ 编程规范详解
来吧!各大厂知名规范体系~ 各有特点各有侧重~
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++ 编程规范详解的更多相关文章
- 3dTiles 数据规范详解[1] 介绍
版权:转载请带原地址.https://www.cnblogs.com/onsummer/p/12799366.html @秋意正寒 Web中的三维 html5和webgl技术使得浏览器三维变成了可能. ...
- java并发编程 | 锁详解:AQS,Lock,ReentrantLock,ReentrantReadWriteLock
原文:java并发编程 | 锁详解:AQS,Lock,ReentrantLock,ReentrantReadWriteLock 锁 锁是用来控制多个线程访问共享资源的方式,java中可以使用synch ...
- php为什么需要异步编程?php异步编程的详解(附示例)
本篇文章给大家带来的内容是关于php为什么需要异步编程?php异步编程的详解(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 我对 php 异步的知识还比较混乱,写这篇是为了 ...
- JavaScript面向对象编程—this详解
this详解 作者的话 在JavaScriptOPPt面向对象编程中,this这位老大哥,相信大家不会陌生.大家在遇到this时,很多朋友难免会有个疑问:"这个this是什么,它到底指向 ...
- java网络编程(TCP详解)
网络编程详解-TCP 一,TCP协议的特点 面向连接的协议(有发送端就一定要有接收端) 通过三次连接握手建立连接 通过四次握手断开连接 基于IO流传输数据 传输数据大小 ...
- java网络编程(UDP详解)
UDP详解 一,TCP/IP协议栈中,TCP协议和UDP协议的联系和区别? 联系: TCP和UDP是TCP/IP协议栈中传输层的两个协议,它们使用网络层功能把数据包发送到目的地,从而为应用层提供网络服 ...
- MapReduce编程模型详解(基于Windows平台Eclipse)
本文基于Windows平台Eclipse,以使用MapReduce编程模型统计文本文件中相同单词的个数来详述了整个编程流程及需要注意的地方.不当之处还请留言指出. 前期准备 hadoop集群的搭建 编 ...
- Java Stream函数式编程图文详解(二):管道数据处理
一.Java Stream管道数据处理操作 在本号之前发布的文章<Java Stream函数式编程?用过都说好,案例图文详解送给你>中,笔者对Java Stream的介绍以及简单的使用方法 ...
- Javascript模块化编程之CommonJS,AMD,CMD,UMD模块加载规范详解
JavaSript模块化 在了解AMD,CMD规范前,还是需要先来简单地了解下什么是模块化,模块化开发? 模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问 题进行系 ...
随机推荐
- BZOJ1787/Luogu4281: [Ahoi2008]Meet 紧急集合
画画图可知,三点\(lca\)必有两相同,\(a,b,c\)距离为\(dis_a + dis_b + dis_c - dis_{lca(a,b)} - dis_{lca(b,c)} - dis_{lc ...
- MySQL 数据操纵语句
插入 插入多个字段 insert into grade (`name`) values ('大一'),('大二'),('大三'),('大四'); 修改 设置时间为当前时间 update `studen ...
- iOS白嫖系列Testflight
1.Picsart 白嫖一年会员 使用 Picsart 照片编辑器和视频编辑器,您可以将您的创意变为现实.制作专业级拼贴画.设计和添加贴纸.快速移除和交换背景.尝试热门编辑,如黄金时段.镜子自拍和复古 ...
- 最大连续子序列(简单DP实现)
最大连续子序列 最大连续子数列和一道很经典的算法问题,给定一个数列,其中可能有正数也可能有负数,我们的任务是找出其中连续的一个子数列(不允许空序列),使它们的和尽可能大.我们一起用多种方式,逐步优化解 ...
- 【MySQL】从入门到掌握3-WorkBench
上期:[MySQL]从入门到掌握2-下载安装 我们安装完MySQL Server的时候,是没有任何界面的. 不过很好,我们有一个工具,MySQL Workbench,他可以简化我们的操作,有点像Jav ...
- Hadoop阶段学习总结
第一部分:HDFS相关问题 一.描述一下HDFS的数据写入流程 首先由客户端想NameNode服务发起写数据请求,NameNode接收到请求后会进行基本验证,验证内容包括对请求上传的路径进行合法验 ...
- flutter系列之:flutter中常用的Stack layout详解
[toc] 简介 对于现代APP的应用来说,为了更加美观,通常会需要用到不同图像的堆叠效果,比如在一个APP用户背景头像上面添加一个按钮,表示可以修改用户信息等. 要实现这样的效果,我们需要在一个Im ...
- 在logstash中启动X-Pack Management功能后配置logstash的情况说明
开启X-Pack Management功能后,启动logstsh的时候就不用再配置logstash.conf文件了,启动的时候也不用再使用-f指定这个文件进行启动了 一旦启动了logstash的集中管 ...
- Docker网络详细理解-容器网络互通
这篇文章主要解决以下几个问题: 1.同一个网段的容器互相之间通过ip进行ping通 2.同一个网段的容器互相之间通过容器名,通过使用--link进行ping通,已放弃这种方法 3.同一个网段的容器互相 ...
- Nexus OSS 3 搭建并配置使用 Docker & Git LFS 仓库
转载自:https://cloud.tencent.com/developer/article/1010590 1.Nexus OSS 3 介绍 我们知道 Nexus 是一个强大的 Maven 仓库管 ...