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

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. 技术分享 | 简单测试MySQL 8.0.26 vs GreatSQL 8.0.25的MGR稳定性表现

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. M ...

  2. 日均 6000+ 实例,TB 级数据流量,Apache DolphinScheduler 如何做联通医疗大数据平台的“顶梁柱”?

    作者 | 胡泽康 鄞乐炜 作者简介 胡泽康 联通(广东)产业互联网公司  大数据工程师,专注于开源大数据领域,从事大数据平台研发工作 鄞乐炜 联通(广东)产业互联网公司 大数据工程师,主要从事大数据平 ...

  3. Warning Please make sure the network configuration is correct!( iaas-install-mysql.sh 脚本)

    解读先电2.4版 iaas-install-mysql.sh 脚本 基础服务的操作命令已经编写成shell脚本,通过脚本进行一键安装.如下: # Controller节点 安装 执行脚本iaas-in ...

  4. Node.js + Express + Knex 开发 API 接口

    安装依赖包 npm i express knex mysql2 这是 Knex 官方文档地址:Knex.js - SQL query builder. 搭建接口 config.js 新建一个 conf ...

  5. Spring 14: Spring + MyBatis初步整合开发

    SM整合步骤 预期项目结构 新建数据库和数据表 springuser.sql脚本如下 create database ssm; use ssm; create table users( userid ...

  6. 浅析websocket的基本应用spring boot + vue +C# + WPF

    1.基本概念 首先websocket是基于H5的一种通信.在网页中如果定时获取服务器端的实时数据,我们常采用long poll 和ajax轮询的方式.但是在轮询过程中,由于根本没有新数据的改变,而造成 ...

  7. ipad好伴侣

    https://museapp.com/ Muse是用于研究笔记,阅读,草图,屏幕截图和书签的空间画布.

  8. helm安装csi-driver-nfs-v4.1.0

    Application version v4.1.0 Chart version v4.1.0 获取chart包 helm repo add csi-driver-nfs https://raw.gi ...

  9. 刨析一下C++构造析构函数能不能声明为虚函数的背后机理?

    以下内容为本人的著作,如需要转载,请声明原文链接微信公众号「englyf」https://www.cnblogs.com/englyf/p/16631774.html 先说结论: 构造函数不能声明为虚 ...

  10. 【Java UI】HarmonyOS添加日历事件

    ​参考资料 CalendarDataHelper Events Reminders api讲解 添加权限 在config.json添加权限代码如下 "reqPermissions" ...