Validation 使用IF语句时有正确或错误的做法:IF(foo)或IF(foo==true)?

Validation 使用IF语句时有正确或错误的做法:IF(foo)或IF(foo==true)?,validation,if-statement,logic,Validation,If Statement,Logic,在我(短暂的)编程生涯中(仅仅是一名实习学生),我注意到当涉及到IF语句时,有两种不同的方法 如果我们将foo作为布尔值: if(foo) { //do stuff } 这是我处理IF语句时的首选方式,如果我在寻找错误,我会使用: if(!foo) { //do more stuff } 然而,当一些人看到这一点时,他们会扬起眉毛,暗示我可能已经养成了坏习惯。但我想知道,这种方式和“典型”方式有什么区别吗 我是否落入了新程序员的常见陷阱?或者没有区别(至少有一个明显的区别)大

在我(短暂的)编程生涯中(仅仅是一名实习学生),我注意到当涉及到IF语句时,有两种不同的方法

如果我们将
foo
作为布尔值:

if(foo)
{
    //do stuff
}
这是我处理IF语句时的首选方式,如果我在寻找错误,我会使用:

if(!foo)
{
    //do more stuff
}

然而,当一些人看到这一点时,他们会扬起眉毛,暗示我可能已经养成了坏习惯。但我想知道,这种方式和“典型”方式有什么区别吗


我是否落入了新程序员的常见陷阱?或者没有区别(至少有一个明显的区别)

大多数编码约定告诉您,布尔检查是作为

if(someBoolean) {


这只是提高了可读性。如果您不确定,请查看一些代码约定,以下是Java的约定:

我想大多数语言都建议您按照自己的方式进行

if(foo)
{
    //do stuff
}
例如,Python说

不要使用==将布尔值与True或False进行比较

Yes:   if greeting:
No:    if greeting == True:
Worse: if greeting is True:

if-else语句类应具有以下形式:

if (condition) {
    statements;
}
只是小提示: 说到状态检查,这是我几周前听到的好消息 例如,如果你用C语言比较

if(变量==“值”)…

如果您意外地编写了
if(variable=“value”)…

编译器不会抛出错误,因此有些人使用
if(“value”==variable).
,然后如果您意外地编写
=
而不是
=
,编译器将抛出错误

我从不写==true或==false。在我看来,这与if语句的要点背道而驰

if基本上是:如果布尔表达式为真,那么做些什么。布尔表达式本身就是一个布尔表达式,为什么要将其包装

所以在我看来,使用==true的是那些有坏习惯的。因为他们表现出对语言运作方式的无知

想想这些“允许的”写if(Foo)和if(!Foo)的方法:

使用==和!=Boolean实际上引入了在编程和阅读代码时犯错误的新方法

布尔和!布尔值很难被误读。

检查
if(foo==true)
表示

检查foo是否等于true是否等于true


在我看来,这只是一种开销。

“当一些人看到这一点时,他们会扬起眉毛”。。。真正地我会对
==true
版本感到惊讶。这就是我所想的!我一直认为用我通常的方式来做这件事更有意义,在大学里,我们被展示了==真实的方式,但我也认为第一种方式看起来更整洁。“允许”的方式列表以一种很好的方式说明了这个问题。这是一个很好的答案,现在我确信我是正确的!你觉得经常犯这些错误足以证明倒装句子的可读性降低了吗?在C#中,您将收到编译器警告,因此我总是按照我阅读的方式编写。我也用其他语言这样做,因为我已经多次犯过这个错误。这个答案很有用,参考文献也很有用:)
Yes:   if greeting:
No:    if greeting == True:
Worse: if greeting is True:
if (condition) {
    statements;
}
if (Foo == true) //If Foo is the same as true
if (Foo != true //If Foo is not the same as true
if (Foo != false) //if Foo is not the same as false
if (Foo == false) //If Foo is the same as false
if (Foo) //If Foo
if (!Foo) //If not Foo