你首选的布尔对是什么:1/0是/否是/否?

时间:2009-01-22 21:53:32

标签: sql naming-conventions project-planning

  1. 在处理MySQL时,我通常使用BOOLEAN类型,它相当于TINYINT(1)或1/0
  2. 在我使用的大多数语言中,首选是真/假
  3. 在显示表单时,有时“是/否”更有意义

7 个答案:

答案 0 :(得分:25)

enum Bool 
{ 
    True, 
    False, 
    FileNotFound 
};

http://thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx

答案 1 :(得分:8)

代码:true / false。

在用户界面中:是/否或确定/取消

答案 2 :(得分:6)

truefalse对我来说更有意义,在代码中 - 部分是通过熟悉,我敢肯定。我怀疑我很快就习惯了yesno。 1和0确实对我不起作用。

考虑表达式

age == 5

这是对真相的测试。 age 5的值是多少?对,是真的。 “是”和“否”对我来说都没问题,但是问题的答案是“age 5的价值?”是“1”对我来说似乎很反直觉。仅仅因为那是真实引擎的典型二进制表示并不意味着它在更高的抽象中是有用的。

答案 3 :(得分:5)

哪个更容易阅读?

while(true) {}
while(yes) {}
while(1) {}

在大多数情况下,我会坚持使用。

答案 4 :(得分:5)

以下是我的生活规则......

规则#1

在用于与CPU通信的编程语言中使用定义良好的常量,即在大多数现代情况下为布尔值的真/假。如果数据库提供了布尔类型或某些等效类型,当然应该使用它。

规则#2

使用他们的首选语言和习语与您的软件用户互动,即是/否问题应提供是/否(或者可能是否的替代,例如取消)。

规则#3

不确定性应以范围表示,即“依赖于”,随后将是“关于什么?”的问题。我知道开发人员通过将他们可能需要的每个依赖项复制并粘贴到项目的每个代码文件中作为“using”语句来回答问题。这只是草率,请麻烦按字母顺序或至少将名称空间组合在一起。

当一个布尔只是不够

顺便提一下,C#中提供的一个有趣的转折是Nullable;

你可以写

Nullable<bool> RespondToIritatingQuestion()
{
    return new Nullable<bool>();

}

OR

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'.");

答案 5 :(得分:2)

对于SQL,

1或0。 SQL有一个布尔类型是有原因的。此外,在非常大的数据库中,它可以影响性能。

答案 6 :(得分:0)

我在数据库中使用布尔值来表示真/假字段。有些人使用ENUM('true', 'false'),但这不是我的偏好。对于编程语言,我总是使用true / false,即使将其设置为0或1也可以。如果表单需要“是”/“否”,我仍然使用布尔值来表示值,但将它们显示为更符合逻辑的字符串。