我总是写这样的布尔表达式:
if (!isValid) {
// code
}
但我的新雇主坚持以下风格:
if (false == isValid) {
// code
}
首选一种风格,还是标准风格?
答案 0 :(得分:10)
我更喜欢第一种风格,因为我更自然地阅读。看到第二种风格是非常不寻常的。
有些人可能更喜欢第二种选择而不是另一种选择的一个原因:
if (isValid == false) { ... }
是后者你不小心写了一个=
而不是==
然后你分配给isValid而不是测试它但是先用常量你会得到一个编译错误。
但是你的第一个建议是这个问题甚至不成问题,所以这是另一个选择第一个问题的理由。
答案 1 :(得分:8)
绝对是第一个。第二个背叛了对表达和价值观的本质缺乏理解,作为编码标准的一部分,它暗示雇主希望雇用非常不称职的程序员 - 而不是一个好兆头。
答案 2 :(得分:8)
每个人都认识到这个片段:
if (isValid.toString().lenght() > 4) {
//code
}
我认为你的第二个例子看的是同一个方向。
答案 3 :(得分:4)
几小时前,C#是discussed。
false == isValid
构造是来自C-world的剩余构造,其中编译器允许您在if
语句中进行分配。我相信Java编译器会在这种情况下警告你。
总的来说,第二种选择太冗长了。
答案 4 :(得分:2)
IMO第一个更易读,第二个更冗长。
我肯定会去第一个
答案 5 :(得分:2)
您正在评估变量,而不是false
,因此从可读性的角度来看,后者是不正确的。所以我个人会坚持第一个选择。
答案 6 :(得分:2)
我将在这里尝试一个包含所有上述答案的综合答案。
第一种风格绝对是首选,原因如下:
唯一的例外是变量是布尔值而不是布尔值。在这种情况下,第二个是与第一个不同的表达式,当isValid为null时以及当它为Boolean.FALSE时,求值为false。如果是这种情况,可以使用第二个。
答案 7 :(得分:1)
第二种风格并不要求你自己否定表达(这可能比“isValid”复杂得多)。但是如果你忘记输入两个='s,那么写“isValid == false”可能会导致无意识的分配,因此成语就是把右边的东西放在一个不能成为右值的位置。
第一种风格似乎是那些知道自己在做什么的人的首选。
答案 8 :(得分:0)
我只想说我二十年前在学校学过C并且已经转向Perl和Java,现在C#都有相同的语法和...
我认为(!myvar)是最受欢迎的
我认为(myvar == false)也很好
20年来,我从未见过(false==myvar)
我认为你的老板正在抽烟 - 我很抱歉,但我认为这是一个标志,你的老板是某种控制狂或者麻木。