programming-languages - 在程序中使用括号会降低可读性的例子有哪些?

标签 programming-languages parentheses language-concepts

我一直认为括号提高了可读性,但是在我的教科书中有一句话说使用括号会大大降低程序的可读性。有没有人有任何例子?

最佳答案

我可以找到很多反例,其中缺少括号会降低可读性,但对于作者可能的意思,我能想到的唯一例子是这样的:

if(((a == null) || (!(a.isSomething()))) && ((b == null) || (!(b.isSomething()))))
{
   // do some stuff
}

在上述情况下,方法调用周围的 () 是不必要的,并且这种代码可能会受益于将术语分解为变量。由于所有这些接近的括号都处于条件中间,因此很难确切地看到什么与什么组合在一起。
boolean aIsNotSomething = (a == null) || !a.isSomething();  // parens for readability
boolean bIsNotSomething = (b == null) || !b.isSomething();  // ditto
if(aIsNotSomething && bIsNotSomething)
{
   // do some stuff
}

我认为以上内容更具可读性,但这是个人意见。这可能就是作者所说的。

括号的一些好的用法:
  • 在没有括号
  • 的情况下行为改变时区分操作顺序
  • 当行为不受影响时区分操作顺序,但对绑定(bind)规则不够了解的人会阅读您的代码。好公民规则。
  • 指示括号内的表达式在用于更大的表达式之前应进行评估:System.out.println("The answer is " + (a + b));

  • 可能混淆使用括号:
  • 在不可能有​​其他含义的地方,比如在 a.isSomething() 前面多于。在 Java 中,如果 aObject , !a本身就是一个错误,所以很明显!a.isSomething()必须否定方法调用的返回值。
  • 将大量条件或表达式链接在一起,如果分解会更清晰。就像上面的代码示例一样,将大的附加语句分解成更小的 block 可以让代码更直接地在调试器中逐步执行,并且如果代码后面需要条件/值,你不要结束重复表达并做两次工作。但是,这是主观的,如果您只在一个地方使用表达式并且您的调试器无论如何都会向您显示中间评估的表达式,那么这显然是没有意义的。
  • 关于programming-languages - 在程序中使用括号会降低可读性的例子有哪些?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2442088/

    相关文章:

    programming-languages - 为 Windows 脚本宿主 (WSH) 编写语言

    algorithm - 将字符串括起来,以便表达式采用给定值

    serialization - 什么是序列化?

    Delphi - 我该如何改进

    javascript - 您希望 Javascript 在浏览器之外得到广泛使用吗?

    c++ - C++ 给 C 增加了什么?

    java - 在 Querydsl 中设置括号

    java - 构建Java控制台程序的正确方法

    programming-languages - 高级语言应该/将达到多高?

    php - 带括号的 PHP 变量?