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