Validation 使用IF语句时有正确或错误的做法:IF(foo)或IF(foo==true)?
在我(短暂的)编程生涯中(仅仅是一名实习学生),我注意到当涉及到IF语句时,有两种不同的方法 如果我们将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 } 然而,当一些人看到这一点时,他们会扬起眉毛,暗示我可能已经养成了坏习惯。但我想知道,这种方式和“典型”方式有什么区别吗 我是否落入了新程序员的常见陷阱?或者没有区别(至少有一个明显的区别)大
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