【问题标题】:Why use `return x == 5 ? true : false;`? [closed]为什么使用 `return x == 5 ?真:假;`? [关闭]
【发布时间】:2012-06-12 20:20:50
【问题描述】:

我看不出这种编码实践的优势。我现在正在处理的项目充满了这些陈述,所以这不是一个错误。

另一个例子:

return getNumberOfBooks() > 5 ? true : false;

还有一个:

return isRed() ? true : false;

【问题讨论】:

  • :-D 这很像我的同学在我们高中的编程课上所做的。例如for (i = 0; i < 3; i++) { if (i == 1) puts("1"); else if (i == 2) puts("2"); else puts("3"); }。因此,在我看来,似乎有人误解了通过比较得出的布尔值与常量给出的值一样好。
  • 有人对三元表达式很着迷。
  • @Imp:具有讽刺意味的是,输出将是“3”、“1”、“2”。
  • @Makoto 嗯,我的错误 :) 但你明白我想说明的重点;)
  • 人们有时确实很有创意,我在真实代码中看到过诸如“myBool |= true”之类的东西:)。

标签: java boolean


【解决方案1】:

绝对没有理由这样做。

它是多余的,使代码更难阅读。

以下内容更容易阅读:

return ( getNumberOfBooks() > 5 );

return isRed();

【讨论】:

  • 即使是第一次返回的大括号( ... )也不需要。
  • 我觉得 more 不可读。我相信很多人也不会。
  • 当然不是需要,但我觉得它让代码更具可读性。
  • @jahroy - ..除非知道运算符优先级。
  • 不确定当只有一个运算符时如何应用优先级...
【解决方案2】:

看来您正在与新手程序员一起做一个项目。从你看到的地方开始重构:

return getNumberOfBooks() > 5 ? true : false;
return isRed() ? true : false;

改变它:

return getNumberOfBooks() > 5;
return isRed();

【讨论】:

  • 更好的是:return ( getNumberOfBooks() > 5 ); 这更具可读性(在我看来,根据编码约定)。
  • @jahroy 你是对的,但这只是一个细节:P
【解决方案3】:

三元运算符使代码几乎不可读, 认为这是一种聪明的编码方式,但除非真的需要,否则不应鼓励

【讨论】:

  • 同意...滥用三元运算符让我发疯!
  • 是的......你是对的......任何傻瓜都可以编写计算机可以阅读的代码,但只有伟大的程序员才能编写人类可以阅读的代码
  • @jahroy 是的 abuse 运算符也让我发疯,但是当有效使用时(即相对简单的操作),我认为它有助于使您的代码更具可读性。它将大约 4 行繁琐的代码压缩为 1 行。从我的脑海中抽出一个例子:File file = ...; return (file == null) ? null : file.getPath();
  • @jahroy 另外,如果布尔测试中有任何空格,我总是用括号括起来以使其更具可读性(如上面的示例)。
  • 实际上,我认为代码的可读性是代码正常工作最重要的事情,因此,按时间顺序,它比正常工作的代码更重要。
【解决方案4】:

显然这是不必要的冗余。

我建议在 Eclipse 中这样做:

  1. 找到所有与正则表达式“return (something) ? true : false”匹配的内容并将其替换为something
  2. 以及所有匹配正则表达式“return (something) ? false : true” with !(something)

您可以将这个正则表达式的编写委托给编写此项目的人:D

【讨论】:

    猜你喜欢
    • 2014-02-03
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 2022-01-01
    • 1970-01-01
    • 2021-07-01
    • 2014-09-07
    • 1970-01-01
    相关资源
    最近更新 更多