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

在这里插入图片描述

💗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.rhkb.cn/news/120605.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Ubuntu上安装CUDA和cuDNN以及验证安装步骤

在Ubuntu上安装CUDA和cuDNN以及验证安装步骤 本教程详细介绍了如何在Ubuntu操作系统上安装CUDA(NVIDIA的并行计算平台)和cuDNN(深度神经网络库),以及如何验证安装是否成功。通过按照这些步骤操作,您将能够…

小黑受到了未来的焦虑,周四继续参加团跑活动仰山跑,跑奥森的坡,越跑越上瘾更加热爱生活的leetcode之旅:LCR 008. 长度最小的子数组

小黑代码1 class Solution:def minSubArrayLen(self, target: int, nums: List[int]) -> int:# 数组长度n len(nums)# 双指针head 0tail 0# 中间变量sum_ 0# 结果变量res n1# 开始双指针迭代while tail < n:sum_ nums[tail]tail 1while sum_ > target:if tail…

0010Java程序设计-springboot+vue影院售票系统设计与实现

摘 要目 录系统实现开发环境 摘 要 看电影已经成为了人们生活中不可缺少的一部分&#xff0c;电影院售票及管理系统是电影院的日常管理及售票任务的核心&#xff0c; 在电影院中&#xff0c; 工作人员并非只是放映电影&#xff0c; 还有诸如票房统计、影片放映、影片场次安排、…

动态规划:路径和子数组问题(C++)

动态规划&#xff1a;路径和子数组问题 路径问题1.不同路径&#xff08;中等&#xff09;2.不同路径II&#xff08;中等&#xff09;3.下降路径最⼩和&#xff08;中等&#xff09;4.地下城游戏&#xff08;困难&#xff09; 子数组问题1.最大子数组和&#xff08;中等&#xf…

一篇文章教会你SpringMVC

目录 1.什么是SpringMVC 2.SpringMVC工作流程 3.SpringMVC核心组件 4.SpringMVC的配置流程 4.1导入POM依赖 4.2在WEB-INF下添加springmvc-servlet.xml(spring-mvc.xml) 4.3 修改web.xml 创建一个Controller用来存放web层的方法和内容 创建一个前端页面用来做测试展示 前言…

04 Linux补充|C/C++

目录 Linux补充 C语⾔ C语言中puts和printf的区别&#xff1f; Linux补充 (1)ubuntu安装ssh服务端openssh-server命令&#xff1a; ubuntu安装后默认只有ssh客户端&#xff0c;只能去连其它ssh服务器&#xff1b;其它客户端想要连接这个ubuntu系统&#xff0c;需要安装部署…

进制转换(二进制、八进制、十六进制、十进制)

一、进制表示 二进制&#xff1a;每一位只有两种符号表示 -> 0,1 例如 (101011)₂&#xff0c;也可写作101011B&#xff0c;其中B是Binary英文的缩写。八进制&#xff1a; 每一位有8种符号表示(0~7)&#xff0c;例如(1652)₈&#xff0c;也可写作1652O&#xff0c;其中O是O…

STL常用容器 (C++核心基础教程之STL容器详解)String的API

在C的标准模板库&#xff08;STL&#xff09;中&#xff0c;有多种容器可供使用。以下是一些常见的容器类型&#xff1a; 序列容器&#xff08;Sequential Containers&#xff09;&#xff1a; std::vector&#xff1a;动态数组&#xff0c;支持快速随机访问。 std::list&…

CS420 课程笔记 P7 - 虚拟内存 多级指针寻址

文章目录 IntroPointersMemory leaksPointer pathPointer scanningExample! Intro 上节课我们学习了静态地址&#xff0c;这节课我们将着手关注动态地址&#xff0c;我们需要了解一个叫做指针的东西 Pointers 简单地说&#xff0c;指针是对象之间的单向连接 Pointers are co…

vue集成mars3d后,basemaps加不上去

首先&#xff1a; <template> <div id"centerDiv" class"mapcontainer"> <mars-map :url"configUrl" οnlοad"onMapload" /> </div> </template> <script> import MarsMap from ../component…

C到C++的升级

C和C的关系 C继承了所有C语言的特性&#xff1b;C在C的基础上提供了更多的语法和特性&#xff0c;C语言去除了一些C语言的不好的特性。C的设计目标是运行效率与开发效率的统一。 变化一&#xff1a;所有变量都可以在使用时定义 C中更强调语言的实用性&#xff0c;所有的变量…

解决centos离线安装cmake找不到OpenSSL问题

安装方法&#xff1a;见另外一篇文章 https://blog.csdn.net/zhongxj183/article/details/118488629 按照文章下载了离线gcc 和OpenSSL&#xff0c;以及在cmake官网下载了最新版 cmake-3.27.4.tar.gz 顺利安装gcc 和OpenSSL 但执行编译cmake时&#xff0c;报错找不到OpenSSL…

【python】读取.dat格式文件

import binascii# 打开二进制文件以只读二进制模式 with open(EXCEL/文件.dat, rb) as file:binary_data file.read()print(binary_data)# 将二进制数据转换为十六进制字符串 hex_data binascii.hexlify(binary_data).decode(utf-8) # binary_data 现在包含了文件的二进制内容…

计算机图形学线性代数相关概念

Transformation&#xff08;2D-Model&#xff09; Scale(缩放) [ x ′ y ′ ] [ s 0 0 s ] [ x y ] (等比例缩放) \left[ \begin{matrix} x \\ y \end{matrix} \right] \left[ \begin{matrix} s & 0 \\ 0 & s \end{matrix} \right] \left[ \begin{matrix} x \\ y \en…

页面页脚部分CSS分享

先看效果&#xff1a; CSS部分&#xff1a;&#xff08;查看更多&#xff09; <style>body {display: grid;grid-template-rows: 1fr 10rem auto;grid-template-areas: "main" "." "footer";overflow-x: hidden;background: #F5F7FA;min…

Qt+C++自建网页浏览器-Chrome blink最新内核基础上搭建-改进版本

程序示例精选 QtC自建网页浏览器-Chrome blink最新内核基础上搭建-改进版本 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<QtC自建网页浏览器-Chrome blink最新内核基础上搭建-改进版…

linux并发服务器 —— linux网络编程(七)

网络结构模式 C/S结构 - 客户机/服务器&#xff1b;采用两层结构&#xff0c;服务器负责数据的管理&#xff0c;客户机负责完成与用户的交互&#xff1b;C/S结构中&#xff0c;服务器 - 后台服务&#xff0c;客户机 - 前台功能&#xff1b; 优点 1. 充分发挥客户端PC处理能力…

机器学习笔记之最优化理论与方法(六)无约束优化问题——最优性条件

机器学习笔记之最优化理论与方法——无约束优化问题[最优性条件] 引言无约束优化问题无约束优化问题最优解的定义 无约束优化问题的最优性条件无约束优化问题的充要条件无约束优化问题的必要条件无约束优化问题的充分条件 引言 本节将介绍无约束优化问题&#xff0c;主要介绍无…

DDR2 IP核调式记录2

本文相对简单&#xff0c;只供自己看看就行。从其它的博客找了个代码&#xff0c;然后记录下仿真波形。 1. 功能 直接使用quartus生成的DDR2 IP核&#xff0c;然后实现循环 -->写入burst长度的数据后读出。 代码数据的传输是32位&#xff0c;实际使用了两片IC。因此IP核也是…

51单片机热水器温度控制系统仿真设计( proteus仿真+程序+原理图+报告+讲解视频)

51单片机热水器温度控制系统仿真设计 1.主要功能&#xff1a;2.仿真3. 程序代码4. 原理图5. 设计报告6. 设计资料内容清单 &&下载链接 51单片机热水器温度控制系统仿真设计( proteus仿真程序原理图报告讲解视频&#xff09; 仿真图proteus7.8及以上 程序编译器&#x…