- 在处理 MySQL 时,我一般使用 BOOLEAN 类型,相当于 TINYINT(1),也就是 1/0
- 在我使用的大多数语言中,true/false 是首选
- 显示表单时,有时“是/否”更有意义
7 回答
enum Bool
{
True,
False,
FileNotFound
};
在代码中:真/假。
在 UI 中:是/否或确定/取消
true
并且false
对我来说更有意义,在代码中 - 部分是通过熟悉,我敢肯定。我怀疑我很快就习惯yes
了。no
1 和 0 确实对我不起作用。
考虑表达式
age == 5
这是对真实性的考验。值是age
5吗?对,是真的。“是”和“否”对我来说都很好,但是对于“是age
5 的值吗?”这个问题的答案的想法。是“1”对我来说似乎很违反直觉。仅仅因为这是真理罩的典型二进制表示并不意味着它在更高的抽象中是有用的。
哪个更容易阅读?
while(true) {}
while(yes) {}
while(1) {}
在大多数情况下,我会坚持使用 true。
这是我生活的规则...
规则1
在用于与 CPU 通信的编程语言中使用定义明确的常量,即布尔值在大多数现代情况下为真/假。如果数据库提供布尔类型或类似的等价物,当然应该使用它。
规则 #2
通过使用他们喜欢的语言和习惯用法与您的软件用户进行交互,即是/否问题应该提供是/否(或者可能是否的替代方案,例如取消)。
规则#3
不确定性应该用范围来表达,即“取决于”,然后是“基于什么?”的问题。我知道开发人员通过将他们可能需要的几乎每个依赖项复制并粘贴到项目的每个代码文件中作为“使用”语句来回答这个问题。这只是草率,请费心按字母顺序排列或至少将命名空间组合在一起。
当布尔还不够时
顺便说一句,在 C# 中可用的一个有趣的转折是 Nullable;
你可以写
Nullable<bool> RespondToIritatingQuestion()
{
return new Nullable<bool>();
}
或者
bool? RespondToIritatingQuestionWithSytle()
{
return new bool?();
}
提问者需要先评估你的回答,然后才能知道答案(如果有的话)可能是什么......
bool? answer = RespondToIritatingQuestionWithStyle();
if (answer.HasValue)
Trace.WriteLine("The bloke responded with " + answer.Value.ToString());
else
Trace.WriteLine("The bloke responded with 'depends'.");
1 或 0 用于 SQL。SQL 有一个布尔类型是有原因的。此外,在非常大的数据库中,它会影响性能。
我对数据库中的真/假字段使用布尔值。有些人使用ENUM('true', 'false')
,但这不是我的偏好。对于编程语言,我总是使用 true/false,即使将其设置为 0 或 1 也可以。如果表单需要“是”/“否”,我仍然使用布尔值来表示值,但将它们显示为更合乎逻辑的字符串。