【发布时间】:2020-11-11 13:08:16
【问题描述】:
我想我理解 RAII 的含义,并且我在 SO 上发现了很多关于这个成语的问题。我更关心的是 RAII 名称本身。我找不到将这个成语的四个词与它所描述的概念相匹配的方法。有人问过 Bjarne 吗?
在我的理解中,RAII 的意思是:
- 将资源封装到一个类中。
- 资源在其构造函数中获得,
- 然后在其析构函数中释放。
- 当对象超出范围时,此包装类必须处理资源删除。
我如何向某人解释为什么 RAII 以这样的方式命名,而又不以这样一个强大的成语来说这不是一个好名字的借口?
【问题讨论】:
-
为什么这是个问题?如果只是一个坏名字,没必要为此道歉太多,只要你能清楚地解释这个概念:)
-
为了解释一个概念,我应该能够解释为什么它被这样命名。否则,这将是一个非常糟糕的解释。
-
资源没有封装在一个类中,它由一个对象持有。对象被初始化,所以你有你的“初始化”。它与对象的生命周期有关。我不知道为什么这么多人认为“类”是 OOP 的定义特征。它不是。这是对象及其职责。
-
正如您在wikipedia (RAII) 上看到的那样,该成语有您可能更喜欢或更好解释的替代名称。