Left 或 Right 应该表示为布尔值还是枚举
Should Left or Right be represented as a boolean or an enum
对于任何包含布尔值和枚举作为原始类型的语言,我应该将哪种类型用于存储某物是 left
还是 Right
的变量。
我最初的直觉是使用枚举,因为它更具描述性 - 绝对是枚举的一大优势。
但我突然想到,在值必须是 Left
或 Right
的情况下,布尔值会更安全且内存效率更高——两者都支持或使用布尔值。
还有一个问题是,布尔值具有自然方向,但对于 Left
Right
这样的值,没有自然映射,这意味着您需要使用类似这样的值isLeft
- 反对使用布尔值。
对于像这样既二进制又互斥但与 on/off、zero/one 或任何其他自然布尔解释没有任何直接对称性的值,是否有约定或最佳实践?
我不知道其他开发人员的意见是什么,但我的意见是:
编码效率越高越好,可读性次之。
所以布尔值几乎总是更有效率。
所以这就是我要选择的那个。
背景:我主要使用 C++ 工作
我会使用枚举器。如果不检查文档,我不会知道查看某人的项目 true
是指 left
还是 right
,但对于枚举器来说很明显。我还担心代码的不同部分会改变默认值。
您可以使用常量(例如 const bool left = true;
)绕过更改默认值,但这会在代码中引入其他有趣的选项 (bool is_on = right;
)。
对于任何包含布尔值和枚举作为原始类型的语言,我应该将哪种类型用于存储某物是 left
还是 Right
的变量。
我最初的直觉是使用枚举,因为它更具描述性 - 绝对是枚举的一大优势。
但我突然想到,在值必须是 Left
或 Right
的情况下,布尔值会更安全且内存效率更高——两者都支持或使用布尔值。
还有一个问题是,布尔值具有自然方向,但对于 Left
Right
这样的值,没有自然映射,这意味着您需要使用类似这样的值isLeft
- 反对使用布尔值。
对于像这样既二进制又互斥但与 on/off、zero/one 或任何其他自然布尔解释没有任何直接对称性的值,是否有约定或最佳实践?
我不知道其他开发人员的意见是什么,但我的意见是: 编码效率越高越好,可读性次之。
所以布尔值几乎总是更有效率。 所以这就是我要选择的那个。
背景:我主要使用 C++ 工作
我会使用枚举器。如果不检查文档,我不会知道查看某人的项目 true
是指 left
还是 right
,但对于枚举器来说很明显。我还担心代码的不同部分会改变默认值。
您可以使用常量(例如 const bool left = true;
)绕过更改默认值,但这会在代码中引入其他有趣的选项 (bool is_on = right;
)。