1

到目前为止,在我的(短暂的)编程生涯中(只是一个从事实习工作的学生),我注意到当谈到 IF 语句时,有两种不同的方法。

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

if(foo)
{
    //do stuff
}

这是我在处理 IF 语句时首选的做事方式,如果我正在寻找错误,我会使用:

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

但是,当有些人看到这一点时,他们会扬起眉毛,这表明我可能陷入了一个坏习惯。但我想知道,这种方式和“典型”方式有什么区别吗?

if(foo == true)
{
    //do a bit more stuff
}

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

4

4 回答 4

2

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

if 基本上是:如果布尔表达式为真,则执行某些操作。Boolean 本身就是一个布尔表达式,那么为什么要包装它呢?

所以在我看来,使用 == true 的人是有坏习惯的人。因为他们表现出对语言如何工作的无知。

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

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

将 == 和 != 与布尔值一起使用实际上引入了在编程和阅读代码时犯错的新方法。

Boolean 和 !Boolean 很难被误读。

于 2013-02-20T09:37:57.603 回答
1

我想大多数语言都建议按照你的方式做

if(foo)
{
    //do stuff
}

例如Python PEP8

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

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

Java 编程语言 7 的代码约定的另一个示例

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

if (condition) {
    statements;
}

只是一个小提示:谈到条件检查,这是我几周前听到的一个很好的提示如果您在 C 中进行比较,例如

if(variable == "value") ....

你会遇到这样的问题,如果你不小心写if (variable = "value") ... 编译器不会抛出错误,所以有些人使用的约定if ("value" == variable) ...,那么如果你不小心写=而不是==,编译器会抛出错误

于 2013-02-20T09:37:08.777 回答
0

大多数编码约定告诉您布尔检查被测试为

if(someBoolean) {

或者

if(!someBoolean) {

这只是提高了可读性。如果您不确定,请查看一些代码约定,以下是 Java 代码约定:http ://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html

于 2013-02-20T09:31:50.377 回答
0

检查if(foo == true)手段

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

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

于 2013-02-20T09:48:24.460 回答