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

dit*_*med 2 sql project-planning naming-conventions

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

Ed *_* S. 8

在代码中:true/false.

在UI中:是/否或确定/取消

  • 在使用是/否或确定/取消之前,请务必检查您提出的问题."你想取消手术吗?" - 确定/取消 (5认同)

Jon*_*eet 6

truefalse使得很多更有意义,我在代码-部分是通过熟悉,我敢肯定.我怀疑我会习惯yesno很快.1和0真的不适合我.

考虑表达式

age == 5
Run Code Online (Sandbox Code Playgroud)

这是对真相的测试.价值是age5?对,是真的."是"和"否"对我来说都没问题,但是对于" age5 的价值是什么?" 这个问题的回答这个想法.是"1"对我来说似乎很反直觉.仅仅因为这是真实引擎的典型二进制表示并不意味着它在更高的抽象中是有用的.


Chr*_*ore 5

哪个更容易阅读?

while(true) {}
while(yes) {}
while(1) {}
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,我会坚持认真.


Eno*_*pal 5

这是我住的规则......

规则1

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

规则#2

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

规则#3

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

当一个布尔刚刚不够

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

你可以写

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

}
Run Code Online (Sandbox Code Playgroud)

要么

bool? RespondToIritatingQuestionWithSytle()
{
    return new bool?();

}
Run Code Online (Sandbox Code Playgroud)

提问者在知道答案(如果有的话)之前需要评估你的答案,可能......

bool? answer = RespondToIritatingQuestionWithStyle();

if (answer.HasValue)
    Trace.WriteLine("The bloke responded with " + answer.Value.ToString());
else
    Trace.WriteLine("The bloke responded with 'depends'.");
Run Code Online (Sandbox Code Playgroud)

  • 需要FileNotFound选项. (3认同)