首页 / 知识
关于c ++:ScopeGuard的使用是否真的可以带来更好的代码?
2023-04-14 11:58:00

Does ScopeGuard use really lead to better code?我碰到了多年前由Andrei Alexandrescu和Petru Marginean撰写的这篇文章,其中提出并讨论了一个名为ScopeGuard的实用程序类,用于编写异常安全代码。 我想知道使用这些对象进行编码是否确实可以带来更好的代码,或者它混淆了错误处理,因此,在catch块中更好地呈现警卫队的回调? 有没有人在实际生产代码中使用这些工具有经验?
它肯定会改善您的代码。您初步提出的说法是,它晦涩难懂,并且代码应从
另一方面,显式的
RAII(包括 是。 如果只有一条C ++代码可以建议每个C ++程序员花10分钟学习,那就是ScopeGuard(现在是可免费使用的Loki库的一部分)。
我决定尝试将ScopeGuard(稍作修改)版本用于我正在开发的小型Win32 GUI程序。您可能知道Win32具有许多不同类型的资源,需要以不同的方式关闭(例如,内核句柄通常使用 令我惊讶的是程序缩短了多少。基本上,这是双赢的:您的代码同时变得更短,更健壮。将来的代码更改不会泄漏任何内容。他们只是做不到。多么酷啊? 我经常使用它来保护内存使用,这些是需要释放的东西,它们是从OS返回的。例如:
是。 在C ++中是如此重要,以至于D中甚至是一种特殊的语法:
我认为以上答案缺少一个重要说明。正如其他人指出的那样,可以使用 我没有使用过这个特定的模板,但是我之前使用过类似的东西。是的,与以不同方式实现的同样健壮的代码相比,它的确可以使代码更清晰。 我必须说,不,不,不是。这里的答案有助于说明为什么这是一个真正可怕的想法。资源处理应通过可重用的类完成。他们使用范围保护器实现的唯一一件事就是违反wazoo的要求,并在整个代码库中复制其资源释放代码,而不是编写一个类来处理整个资源。 如果范围警卫有任何实际用途,则资源处理不是其中之一。在这种情况下,它们比普通的RAII逊色得多,因为RAII已进行重复数据删除,并且自动保护和范围保护是手动代码复制或无效。 |
最新内容
相关内容
linux编译源代码命令?
linux编译源代码命令?,工具,代码,百度,最新,环境,项目,系统,电脑,密码,内核,linux怎样编译git源码包1、linux的源码是在/usr/src这个目录下,此linux同步代码命令?
linux同步代码命令?,时间,系统,通信,网络,标准,图片,服务,代码,线程,单位,Linux下线程同步的几种方法1、线程同步的方式包括:互斥锁、读写锁、linux代码对齐命令?
linux代码对齐命令?,系统,地址,标准,信息,对比,名称,代码,命令,文件,工作,linux命令大全之diff命令详解diff[参数][文件1或目录1][文件2或目录linux命令运行代码?
linux命令运行代码?,代码,单位,系统,环境,连续,保险,工具,命令,文件,音乐,Linux中,运行一个C语言程序如何运行1、编译。由.c文件生成.o文件,写搭建linux命令行代码?
搭建linux命令行代码?,系统,软件,工作,名字,服务,代码,地址,环境,管理,密码,linux如何搭建git1、Git已经在你的系统中了,你会做一些事情来客户linux查看命令代码?
linux查看命令代码?,系统,信息,代码,名称,命令,设备,数字,第一,软件,管理,在Linux命令终端中查看和编辑曾执行过的命令1、Linux可以使用以下几linux删除代码命令行?
linux删除代码命令行?,系统,代码,命令,文件,不了,环境,档案,名称,目录,文件夹,linux删除目录命令linux删除目录命令是Linux rm命令。rm即linuxlinux命令行代码实现?
linux命令行代码实现?,标准,代码,管理,网络,地址,工作,命令,网上,环境,名称,用linux命令实现您可以使用 ls 命令使用以下变体:ls -R 还将列出子linux桌面命令代码?
linux桌面命令代码?,电脑,系统,密码,环境,代码,基础,地址,服务,网上,通讯,linux命令行怎么进入桌面1、打开电脑,开机之后会看到桌面上的登 录界c代码执行linux命令?
c代码执行linux命令?,系统,工作,标准,情况,代码,环境,设备,命令,函数,指令,linux下如何用c语言调用shell命令可以通过system函数,调用shell命令linux进入代码行命令?
linux进入代码行命令?,系统,代码,设备,终端,环境,信息,第一,命令,窗口,模式,虚拟机中的linux怎么进入命令方式1、点击打开开始菜单里的终端。linux命令行看代码?
linux命令行看代码?,代码,基础,系统,命令,数字,工作,情况,进程,程序,终端,在Linux命令终端中查看和编辑曾执行过的命令1、使用历史命令:在终端