佳作导读 | 《C++ Core Guidelines》

news2024/11/16 12:01:57

在这里插入图片描述

💗wei_shuo的个人主页

💫wei_shuo的学习社区

🌐Hello World !


佳作导读 | 《C++ Core Guidelines》

在这里插入图片描述

《C++ Core Guidelines》由Bjarne Stroustrup和Herb Sutter等共同编写关于使用C++编程语言的指南;旨在提供关于如何使用C++进行高质量、可维护和可扩展的软件开发的建议;涵盖广泛的主题,包括代码风格、类型和函数设计、内存管理、并发性等;提供一系列的准则和最佳实践,帮助开发人员编写出更安全、更高效的C++代码

书籍导读

《C++ Core Guidelines》C++ 专家讲师Rainer Grimm提炼出Core Guidelines中的精髓,去除晦涩难懂的内容,分享了新的见解和背景,并提供了自己培训课程中经过充分测试的示例;对于便用 C++11及后续版本C++的有经验程序员,Grimm 能提供便利的帮助,使其用好oore Guidelines;《C++ Core Guidelines》大部分代码示例是为 C++17 编写的在合语的地方涵盖了更新版本和C++20,并提供对官方C++Core Guidelines在线版本的引用;无论是创建新软件还是改进旧代码,Grimm 都将帮助我们从Core Guidelines里最有用的规则中获取更多价值,使我们编写的代码更安全、更清晰、更高效,以及更易于维护

书籍内容

《C++ Core Guidelines》与其他同类书籍最大的区别我认为侧重于以下几点:


准则的广泛覆盖:C++ Core Guidelines涵盖了许多不同的主题,包括语言特性的使用、代码组织、异常处理、并发编程、内存管理等。这使得它成为一个全面的参考,能够指导开发者在各个方面编写高质量的C++代码


强调现代C++:指南鼓励开发者使用现代C++的特性和库。它提倡使用智能指针、范围循环、lambda表达式等现代C++特性,以及使用标准库中的容器、算法和其他组件。这有助于提高代码的可读性、可维护性和性能


设计原则的强调:C++ Core Guidelines强调了一些重要的设计原则,例如尽量避免使用裸指针、优先使用值语义、使用RAII等。这些原则有助于编写更安全、更可靠的代码,并避免一些常见的错误和陷阱


实例和示例代码:指南中提供了大量的实例和示例代码,以帮助开发者理解和应用准则。这些示例代码涵盖了各种情况和用例,使得开发者能够更好地理解如何将准则应用于实际代码中


超链接和引用:指南中包含了许多超链接和引用,指向了更深入的解释、讨论和相关资源。这使得开发者可以进一步扩展他们的知识,并深入了解特定主题的更多细节

不可变数据优先于可变数据

使用不可变数据的理由有很多。首先,当你使用常量时,你的代码更容易验证。常量也有更高的优化潜力。但最重要的是,常量在并发程序中具有很大的优势。不可变数据在设计上是没有数据竞争的,因为数据竞争的必要条件就是对数据进行修改

封装杂乱的构件,不要让它在代码中散布开

混乱的代码往往是低级代码,易于隐藏错误,容易出问题。如果可能的话,用 STL 中的高级构件(如容器或算法)来取代你的杂乱代码。如果这不可能,就把那些杂乱的代码封装到一个用户定义的类型或函数中去

适当使用辅助工具

计算机比人类更擅长做枯燥和重复性的工作。也就是说,应该使用静态分析工具、并发工具和测试工具来自动完成这些验证步骤。用一个以上的 C++ 编译器来编译代码一个编译器可能检测不到某种未定义行为,而另一个编译往往是验证代码的最简方式。器可能会在同样情况下发出警告或产生错误

总结

Core Guidelines以工具书的形式组织,便于查找和分享特定主题,不是作为按顺序阅读的教程,供读者学习如何使用现代C++; Rainer Grimm 运用他的教学技巧和业界背景来解决这一艰巨而必要的任务,方便更多的人了解这些规则

书籍

点击购买:《C++ Core Guidelines》

在这里插入图片描述


🌼 结语:创作不易,如果觉得博主的文章赏心悦目,还请——点赞👍收藏⭐️评论📝


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/972973.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux常用命令——csplit命令

在线Linux命令查询工具 csplit 将一个大文件分割成小的碎片文件 补充说明 csplit命令用于将一个大文件分割成小的碎片,并且将分割后的每个碎片保存成一个文件。碎片文件的命名类似“xx00”,“xx01”。csplit命令是split的一个变体,split只…

如何在Win10系统上安装WSL(适用于 Linux 的 Windows 子系统)

诸神缄默不语-个人CSDN博文目录 本文介绍的方法不是唯一的安装方案,但在我的系统上可用。 文章目录 1. 视频版2. 文字版和代码3. 本文撰写过程中使用到的其他网络参考资料 1. 视频版 B站版:在Windows上安装Linux (WSL, 适用于 Linux 的 Windows 子系统…

【Rust 日报】2023-09-03 sudo-rs:sudo 和 su 的内存安全实现

sudo-rs:sudo 和 su 的内存安全实现 sudo-rs 项目通过以下方式改进了原始 sudo 的安全性: 使用内存安全语言(Rust),因为估计原始 sudo 中三分之一的安全漏洞都与内存管理问题有关。省略不常用的功能,以减少…

记2个library cache lock故障case

第一个case 客户说晚上10点的时候做业务很卡,遂取对应时段awr 非常明显的library cache lock事件。这个事件是元数据锁,一旦泛滥对数据库的影响范围很大。 因此,他的泛滥第一时间应该想到会有大量持有元数据的动作。对sql进行检查 这个自动…

精益制造、质量管控,盛虹百世慧共同启动MOM(制造运营管理)

百世慧科技依托在电池智能制造行业中的丰富经验,与盛虹动能达成合作,为其提供MOM制造运营管理平台,并以此为起点,全面提升盛虹动能的制造管理水平与运营体系。 行业困境 中国动力电池已然发展为全球最大的电池产业,但…

【网络安全带你练爬虫-100练】第20练:数据处理-并写入到指定文档位置

目录 一、目标1:解码去标签 二、目标2:提取标签内内容 三、目标3:处理后的数据插入原位置 四、目标4:将指定的内容插入指定的位置 五、目标5:设置上下文字体格式 六、目标6:向多个不同位置插入不同的…

算法笔记:平衡二叉树

1 介绍 平衡二叉树(AVL树)是一种特殊的二叉搜索树(BST),它自动确保树保持低高度,以便实现各种基本操作(如添加、删除和查找)的高效性能。 ——>时间都维持在了O(logN)它是一棵空…

网络安全—0基础入门学习手册

前言 一、什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域,都有攻与防…

windows下配置pcl-python

1.前提概要 python版本的pcl基本上只有3.6的能用,本人3.7/3.8均进行了尝试。 因为很多博主提到的Gtk已经下载不了了,实在是维护人员太懒了。如果你看到这里,可以试试下面这个链接,说不定又能用了呢。 Gtk下载:http:…

vmware网卡(网络适配器)桥接、NAT、仅主机3种模式解析

Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式) Windows系统安装好vmware后,在网络连接中会生成VMnet1和VMnet8两个虚拟网卡。 VMnet1作用于仅主机模式,VMnet8作…

Java作业3

1.下面代码的运行结果是(C) public static void main(String[] args){String s;System.out.println("s"s);}A.代码编程成功,并输出”s” B.代码编译成功,并输出”snull” C.由于String s没有初始化,代码不…

Mqtt学习笔记--接入阿里云(2)

概述 在阿里云IoT平台中,MQTT协议是一种重要的连接方式,可以用于设备与平台之间的通信。通过配置设备的Topic和订阅规则,设备可以在平台上发布/订阅消息,实现设备状态的监控、控制和数据的传输。同时,阿里云IoT平台还提…

算法笔记 二叉搜索树

二叉搜索树(Binary Search Tree,简称 BST)是一种数据结构,用于存储具有可比较键(通常是数字或字符串)的元素 1 结构特点 节点结构:每个节点都有一个键和两个子节点(左子节点和右子…

JavaWeb | 常用的HTML(JavaWeb)标签

目录: HTML简介HTML的基本结构HTML的常用标签:“标题” 标签“换行” 标签“段落” 标签“水平线” 标签“文字” 标签“粗体” 标签“下划线” 标签“斜体” 标签“上标” 标签“下标” 标签“闪烁” 标签表示 “空格”“列表” 标签:无序列…

VGA OUT 的PCB设计注意事项

VGA(Video Graphics Array)即视频图形阵列,具有分辨率高、显示速率快、颜色丰富等优点。VGA接口不但是CRT显示设备的标准接口,同样也是LcD液晶显示设备的标准接口,具有广泛的应用范围。 VGA OUT PCB设计注意事项: 1、整体布局时&…

PCIe 配置空间:Command 寄存器

在 type 0 header 中,command 寄存器的位置如下图所示: 在 type 1 header 中,command 寄存器的位置如下图所示: Command 寄存器的结构如下图: 对于 PCIe,只有 Bit 0/1/2/6/8/10 是有效的,其他必须配置为 0 。 IO Space Enable 该位用于控制设别如何响应 I/O 空间的访…

土著刷题Plus专业版对外开放入驻|在线组卷刷题学习平台|纯净无广|独立小程序|VIP功能全面开放|支持自定义品牌名称和Logo

专业版对外开放入驻 土著刷题Plus专业版,以【录题-分组-刷题-考试】为中心打造一套完备的在线组卷刷题学习平台,自定义品牌名称和Logo,入驻后,您将拥有自己独立的企业级专业运营管理平台。 土著刷题Plus专业版对比个人版优势&…

QT实现TCP通信(服务器与客户端搭建)

一、TCP通信框架 二、QT中的服务器操作 创建一个QTcpServer类对象,该类对象就是一个服务器调用listen函数将该对象设置为被动监听状态,监听时,可以监听指定的ip地址,也可以监听所有主机地址,可以通过指定端口号&#x…

软件上线测评报告怎么做?

软件上线测试 软件上线前必须经过一个整体的测评,从而帮助企业了解软件的运行情况。软件上线测评检测报告(软件产品测试报告)也通常被称为:科技项目验收测试报告、(软件类)科技成果鉴定测试、软件检测报告…

MySql学习笔记04——DDL

DDL 建表语法 建表属于DDL语句,DDL语句包括create drop alter create table 表名(字段名1 数据类型,字段名2 数据类型,字段名3 数据类型,.. );表名一般建议使用t_开头,可读性更强。 Mysql数据类型 varchar 可变长度的字符串,最长为255&…