详解 C/C++ 各大编程规范
伴随 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++ 各大编程规范相关推荐
- shell脚本详解(一)——Shell编程规范与变量
详解Shell编程规范与变量 一.Shell脚本概述 1.shell脚本的概念 2.shell脚本应用场景 3.shell的作用--命令翻译器,"翻译官" 二.用户的登录shell ...
- Spark RDD 论文详解(三)Spark 编程接口
前言 本文隶属于专栏<1000个问题搞定大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见1000个问题搞定大数据技 ...
- 详解智能交通应用大数据“三重门”
文章讲的是详解智能交通应用大数据"三重门",武汉市悬在路口立杆上的金属小盒子--超级电子眼3个月抓了13万起交通违法,逆行.压线.套牌一眼识别,并能自动报警. 只需10秒,重庆市凭 ...
- mapreduce工作流程_详解MapReduce中的五大编程模型
前言 我们上一节讲了关于 MapReduce 中的应用场景和架构分析,最后还使用了一个CountWord的Demo来进行演示,关于MapReduce的具体操作.如果还不了解的朋友可以看看上篇文章:[初 ...
- python 写入excel 日期_详解:Python实现大数据收集至excel的思路大牛分享(建议收藏)...
一.在工程目录中新建一个excel文件 二.使用python脚本程序将目标excel文件中的列头写入,本文省略该部分的code展示,可自行网上查询 三.以下code内容为:实现从接口获取到的数据值写入 ...
- 万字HBase详解带你畅游大数据的海豚湾
写在前面:我是「且听风吟」,目前是某上市游戏公司的大数据开发工程师,热爱大数据开源技术,喜欢分享自己的所学所悟,现阶段正在从头梳理大数据体系的知识,以后将会把时间重点放在Spark和Flink上面. ...
- 详解MapReduce中的五大编程模型
前言 我们上一节讲了关于 MapReduce 中的应用场景和架构分析,最后还使用了一个CountWord的Demo来进行演示,关于MapReduce的具体操作.如果还不了解的朋友可以看看上篇文章:初识 ...
- 《力荐收藏》Hadoop全套组件安装详解——带你走进大数据的深渊
目录 Hadoop部署 部署组件 一.VMware部署安装 二.Ubuntu18.04.5版本的部署安装 三.安装VMware Tools 四.配置ssh免密登陆 五.Java环境安装 Hadoo ...
- 中台架构详解(上) | 大咖说中台
作者 | 耿立超 责编 | 晋兆雨 来源 | <大数据平台架构与原型实现:数据中台建设实战> 中台打破了应用系统的壁垒,从企业全局梳理和规划业务程,重构了组织架构.业务架构与IT 架构. ...
最新文章
- Linux 下 的 cc 和 gcc
- java bmp信息隐藏_BMP图像信息隐藏及检测
- 关于DNS区域查询,DNS字典爆破,以及查询文件问题
- 2008_11_05_星期三
- Java用户修改密码
- Java 对象的序列化
- DCMTK3.6.0(MD支持库)安装说明
- 一个 Accept-Encoding 引发的 requests 爬虫乱码问题
- 向日葵显示不能连接服务器,手机向日葵远程连接服务器
- 基于python的狗屁不通观后感生成器 2.0
- 不要再说Qt教程少了
- VPB安装过程记录-20200310
- c++正方形的面积源代码
- yota3墨水屏调节对比度_【YotaPhoneYOTA3评测】屏幕:背面墨水屏玩法太多样_YotaPhone YOTA 3_手机评测-中关村在线...
- 前端面试vue (上)
- 高等数学:第十二章 微分方程(3)高阶线性微分方程、二阶常系数齐次线性微分方程
- 不激活Win10调整任务栏样式
- java-net-php-python-java民宿平台信息管理系统计算机毕业设计程序
- 你的微信消息是怎么发出去的?
- 联想计算机怎么添加打印机,联想3510打印机驱动怎么装 联想3510打印机驱动安装教程【详解】...
热门文章
- 苹果支付验证回执单相关错误码
- 【IPv6】NS,NA 报文学习
- [题解][Codeforces 1139A~1139F]Codeforces Round #548 (Div. 2) 简要题解
- 解决耳机插在主机上没有声音的问题
- Jquery实现超酷的时间轴特效
- 5G NR preamble生成原理
- HTML5期末大作业:动漫网站设计——迪斯尼公主(6个页面) HTML+CSS+JavaScript 动漫网页HTML代码 学生网页课程设计期末作业下载 动漫大学生网页设计制作成
- 咬断防盗绳偷 iPhone,月入万元不是梦
- 创业失败那天我在做什么
- MT6765 datasheet手册,MT6765参考设计,MT6765芯片资料