检查布尔值是否为真?
bool foo = true; // Do this? if (foo) { } // Or this? if (foo == true) { }
我喜欢他们中的一个,另一个喜欢我的同事。 结果是一样的,但更正确的是什么?
几乎每个我见过表达意见的人都喜欢
if (foo) { }
事实上,我看到很多人批评明确的比较,我甚至可能在此之前就这样做了。 我会说“短”风格是惯用的。
编辑:
请注意,这并不意味着代码行始终不正确。 考虑:
bool? maybeFoo = GetSomeNullableBooleanValue(); if (maybeFoo == true) { ... }
那将编译,但没有“== true”它不会,因为没有来自bool?
的隐式转换bool?
bool
。
这取决于你的情况。
我会说,如果你的博尔有一个好名字,那么:
if (control.IsEnabled) // Read "If control is enabled." { }
将是首选。
但是,如果变量具有不那么明显的名称,则检查true
将有助于理解逻辑。
if (first == true) // Read "If first is true." { }
如果你打算选择
if(foo == true)
为什么不一路走下去呢
if(foo == true == true == true == true == true == true == true == true == true)
这是一回事。
我不同意,如果它明确命名(即: IsSomething
)然后可以不与真实比较,但否则你应该。 如果它在if语句中显然可以与true进行比较。
if(monday)
就像描述一样
if(monday == true)
我也不喜欢相同的标准:
if(!monday)
而不是
if(monday == false)
第一个例子几乎总是在我的书中获胜:
if(foo) { }
它更短更简洁。 为什么在绝对不需要的时候添加额外的支票? 只是在浪费周期……
但我确实同意,在变量命名不佳的情况下,有时候更冗长的语法会使事情更具可读性(只要性能可以接受,这最终会更重要)。
两者都是正确的。
您可能在公司中有一些编码标准 – 只需看看即可完成。 如果你没有 – 你应该:)
我个人更喜欢
if(true == foo) { }
== / =错误类型没有机会,我觉得它在foo类型方面更具表现力。 但这是一个非常主观的问题。
两者都不“更正确”。 我个人的偏好是更简洁的forms,但要么是好的。 对我而言,生命太短暂,甚至无法考虑争论这样的事情。