gpt4 book ai didi

c++ - ScopeGuard 的使用真的会带来更好的代码吗?

转载 作者:IT老高 更新时间:2023-10-28 12:38:05 26 4
gpt4 key购买 nike

我遇到了this article多年前由 Andrei Alexandrescu 和 Petru Marginean 编写,其中介绍并讨论了一个名为 ScopeGuard 的实用程序类,用于编写异常安全代码。我想知道使用这些对象进行编码是否真的会导致更好的代码,或者它是否会混淆错误处理,因为也许守卫的回调会更好地呈现在 catch block 中?有没有人有在实际生产代码中使用这些的经验?

最佳答案

它肯定会改进您的代码。您暂时提出的主张,即它是晦涩难懂的,并且代码可以从 catch block 中获得值(value),这在 C++ 中根本不正确,因为 RAII 是一个既定的习惯用法。 C++ 中的资源处理是通过资源获取来完成的,垃圾回收是通过隐式析构函数调用来完成的。

另一方面,显式的 catch block 会使代码膨胀并引入细微的错误,因为代码流变得更加复杂并且必须显式地进行资源处理。

RAII(包括 ScopeGuards)在 C++ 中并不是一项晦涩难懂的技术,而是已确立的最佳实践。

关于c++ - ScopeGuard 的使用真的会带来更好的代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com