如何命名一组标志?

Posted

技术标签:

【中文标题】如何命名一组标志?【英文标题】:What to name an array of flags? 【发布时间】:2011-02-25 04:54:32 【问题描述】:

我有一个项目,其中许多对象通过维护简单的布尔标志来保持状态。其中有很多,所以我将它们保存在uint32_t 中并使用位掩码。现在有很多标志要跟踪,我已经为它们创建了一个抽象(只是一个包装 uint32_t 的类)与 set()clear() 等。

我的问题:这个类的准确、简洁的名称是什么?我可以给这个类起什么名字,这样你就可以合理地知道它是什么 [for] 只知道这个名字?

我的一些想法:

标志库 标志数组 等

有什么想法吗?

提前致谢! 干杯, -克里斯

【问题讨论】:

作为一个不严肃的回答:我喜欢 FlagPole :-) 这些标志只由一个类管理吗?如果是这样 Flags 听起来很合适。 把它留给 C++ 纯粹主义者来支持单个位旋转的抽象;-) @nos:不幸的是,我在整个代码库中都在使用它。否则,我只需在该类中打包一个 uintN_t 或 bitset 并在其中对访问器进行编码。 【参考方案1】:

标准有这样一个类模板,它被称为std::bitset<N>(N 代表比特/标志的数量)。此类的实际对象可以根据其用途命名,例如state 或其他东西。

【讨论】:

【参考方案2】:

FlagBank 将具有相当的描述性。

但我有一个建议。与其使用 uint32_t 和位掩码,不如使用 STL 向量代替 C。它对布尔情况使用模板特化,其中每个元素只有一位用于存储。非常高效且更加面向对象。

【讨论】:

+1,但恕我直言,“不太像 C”并不是一个很好的理由。那只是偶然的。 vector<bool>(甚至更好,bitset<N>)更好,因为它更容易使用——而不是写flags &= ~(1 << 4)来关闭标志#5,你可以写flags[4] = false

以上是关于如何命名一组标志?的主要内容,如果未能解决你的问题,请参考以下文章

提供“--isolatedModules”标志时无法编译命名空间

Cocoa、FSEvents、kFSEventStreamCreateFlagFileEvents 标志和“重命名”事件

C++ 从 std::async 函数读取命名空间中的全局变量标志

是否可以从-L标志中命名'screen'日志文件?

如何快速的将下载的一组 mipmap 图片转化成 drawable

如何快速的将下载的一组 mipmap 图片转化成 drawable