有哪些例子可以说明在程序中使用括号会降低可读性?

2024-01-15

我一直认为括号提高了可读性,但在我的教科书中有这样一句话:使用括号会极大地降低程序的可读性。有人有例子吗?


我可以找到很多反例lack括号降低了可读性,但我能想到的作者可能的意思的唯一例子是这样的:

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

在上面的情况下,方法调用周围的 () 是不必要的,这种代码may受益于将项分解为变量。由于条件中间有所有这些近括号,因此很难准确地看出什么与什么分组。

boolean aIsNotSomething = (a == null) || !a.isSomething();  // parens for readability
boolean bIsNotSomething = (b == null) || !b.isSomething();  // ditto
if(aIsNotSomething && bIsNotSomething)
{
   // do some stuff
}

我认为上面的内容更具可读性,但这只是个人意见。这可能就是作者所要表达的意思。

括号的一些好用处:

  • 在没有括号的情况下行为发生变化时区分操作顺序
  • 当行为不受影响时区分操作顺序,但不太了解绑定规则的人会阅读您的代码。好公民统治。
  • 指示括号内的表达式在用于更大的表达式之前应先求值:System.out.println("The answer is " + (a + b));

括号的使用可能会令人困惑:

  • 在它不可能有其他含义的地方,比如在前面a.isSomething()多于。在Java中,如果a is an Object, !a本身就是一个错误,所以很明显!a.isSomething()必须否定方法调用的返回值。
  • 将大量条件或表达式连接在一起,如果分解这些条件或表达式会更清晰。如上面的代码示例所示,将大的括号语句分解成较小的块可以使代码在调试器中更直接地单步执行,并且如果稍后在代码中需要条件/值,则不会结束重复表达并做两次工作。不过,这是主观的,如果您只在一处使用表达式并且调试器无论如何都会向您显示中间计算的表达式,那么这显然毫无意义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有哪些例子可以说明在程序中使用括号会降低可读性? 的相关文章

  • PHP 中变量周围的括号有什么作用?

    我在旧平台上使用 PHP 5 3 中的 ImageMagick 我偶然发现了一段代码 当变量周围使用括号时 该代码不起作用 但当删除这些括号时 该代码却起作用 变量两边的括号有什么作用 im new imagick im gt readIm
  • 有哪些例子可以说明在程序中使用括号会降低可读性?

    我一直认为括号提高了可读性 但在我的教科书中有这样一句话 使用括号会极大地降低程序的可读性 有人有例子吗 我可以找到很多反例lack括号降低了可读性 但我能想到的作者可能的意思的唯一例子是这样的 if a null a isSomethin
  • 除了实际破解代码之外,了解 VM 实现的最佳方法是什么?

    我想了解有关虚拟机实现和优化的更多信息 现在 我正在 以很小的方式 使用 JRuby 做出贡献 并且还在使用我自己的在虚拟机中运行的类似 lisp 的语言实现进行游戏 编写 不过 我想获得有关使用虚拟机并设计它们的更多信息 除了阅读 使用现
  • “闭包”和“块”到底有什么区别?

    我发现很多人都用这个词closure and block可以互换 这些人中的大多数无法解释他们在说什么 一些 Java 程序员 甚至是来自非常昂贵的咨询公司的程序员 将匿名内部类称为 块 和 闭包 但我知道这不是真的 您不能从定义可变变量的
  • 我想知道 &a 到底返回什么?

    Suppose 第一个案例 int a int p a it works no error 第二种情况 long int a long int b b a it wont work 我们大多数人都说 b 是变量而不是指针 但请看下面的内容
  • Lua 作为嵌入式语言的替代品?

    我正在开发一个在 DSP 上运行 Linux 的嵌入式系统 现在我们想让它的某些部分可以编写脚本 并且我们正在寻找一种很好的嵌入式脚本语言 这些脚本应该与我们现有的 C 代码库很好地集成 并且小而快 我知道 Lua 是解决此类问题的行业选择
  • 如何使用正则表达式搜索带括号的字符串?

    我有一个 txt 文件 其中包含以下字符串 A 123 B 456 Ab 123 我想搜索Ab 123 在txt文件中 我尝试过的 re search r Ab 123 string 有 12 个具有特殊含义的字符 您可以使用以下命令转义到
  • “线程安全”一词的含义是什么?

    这是否意味着两个线程不能同时更改底层数据 或者这是否意味着当多个线程执行该代码段时 给定的代码段将以可预测的结果运行 线程安全代码是即使许多线程同时执行它也能工作的代码 http mindprod com jgloss threadsafe
  • python modulo 为什么 1-4 %5 与 (1-4)%5 不一样

    有谁知道为什么下面的代码在Python中没有得到相同的结果 为什么我需要括号才能得到正确的结果 example 1 print 1 4 5 outcome 3 example 2 print 1 4 5 outcome 2 这是因为运算符优
  • 计算机图形学:光线追踪和 3D 渲染编程

    我注意到许多顶尖大学都为计算机专业的学生提供与计算机图形学相关的课程 遗憾的是 这是我的大学没有提供的东西 也是我非常想在未来几年内进入的东西 我从一些大学发现的一些项目都很棒 尽管我最感兴趣的是两件事 Raytracing 我想在未来两年
  • 何时在 F# 中优先使用非类型化引用而不是类型化引用?

    F 既有类型化代码引用 也有非类型化代码引用 我想知道在什么用例中人们会选择其中一种而不是另一种 区别只是为了方便 非类型化和类型化引文在所有情况下都可以转换为每种类型 或者是类型化引文 e G 可能使用非类型化引用的子集 是否有任何示例仅
  • 为什么静态方法不被视为良好的面向对象实践? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在阅读斯卡拉编程 https rads stackoverflow com amzn click com 193435631X 在第 4 章
  • 为什么是函数式语言? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我在这里看到很多关于函数式语言之类的讨论 为什么要使用一种语言而不是 传统 语言 他们在哪些方面做得更好 他们最差的是什么 理想的函数
  • 函数式反应式编程的“信号”表示是否正确?

    我一直在研究 FRP 并发现了许多不同的实现 我见过的一种模型我将其称为 信号 表示 这一本质将事件和行为结合成一个实体 首先 信号是一个对象 其值是一种行为 其次 信号具有一个事件 流 可以将其视为标准数据结构并对其进行操作 您可以在信号
  • 什么是 := 运算符?

    在某些编程语言中 我看到 例如 x y 这是什么 运算符通常被称为 它有什么作用 在所有支持运算符的语言中 这意味着分配 在支持运算符的语言中 the 运算符通常表示相等比较 在语言中 意味着赋值 通常用于相等比较 does mean 我不
  • F# 中的非类型化/类型化代码引用与宏卫生之间是否存在关系?

    我想知道 F 中的非类型 类型代码引用与宏系统的卫生之间是否存在关系 他们是否用各自的语言解决相同的问题 或者它们是不同的关注点 元编程方面是唯一的相似之处 即使在这方面 也存在很大的差异 您可以将宏的转换器视为从语法到语法的函数 就像您可
  • 设计模式作为(缺失的)语言功能

    有时人们将设计模式称为缺少的编程语言功能 为了避免关于什么是设计模式的争论 假设我们只考虑原始的 GoF 模式 例如 单例模式在 Scala 中消失了 Scala 使用关键字支持单例对象object 关于这方面的资源很少 特别是设计模式是否
  • “入队”和“出队”之间的区别

    有人可以解释一下主要区别吗 我对任何语言编程中的这些函数都没有明确的了解 C 和 C 等编程语言中的一些基本数据结构是堆栈和队列 堆栈数据结构遵循 先进后出 策略 FILO 其中插入或 推入 堆栈的第一个元素是最后一个从堆栈中删除或 弹出
  • 是否可以通过括号来防止死亡?

    有时 我会编写一些带有比我喜欢的更多括号的代码 if new Day new Date millisecondsPerDay 75 instanceof oldDay Bonus points if that condition made
  • 静态/动态类型与静态/动态绑定

    大家这4个术语有什么区别 能举个例子吗 Static and dynamic是指解决某些编程元素的时间点的行话 Static表示解析是在程序构建时发生的 Dynamic表示解析是在程序运行时发生的 静态和动态打字 Typing指由于数据值之

随机推荐

  • 如何读取 AndroidManifest.xml(二进制)文件?

    我正在尝试读取 AndroiadManifest xml 文件的内容 该文件似乎采用 DBase 3 数据文件 二进制格式 Java中有关于如何读取这个二进制文件的代码示例吗 我不需要写 只需阅读文本内容即可 第1步 首先您需要使用apkt
  • 更改 Angular ui-bootstrap 模板的文件夹位置

    我正在尝试将 ui bootstrap min js 与外部模板一起使用 我收到的错误是 http localhost 13132 Place template timepicker timepicker html 404 Not Foun
  • 验证 MPD 文件 - 使用 MPEG-DASH

    我刚刚开始使用 MPEG DASH 从客户端 遵循 c057623 ISO IEC 23009 1 2012 规范 有谁知道是否有公共库或开源来验证我收到的 MPD 文件 我处理xml没有问题 任何帮助将不胜感激 您可能想检查一下MPEG
  • 获取字符串中当前的纬度和经度

    我想得到latitude and longitude但有时network is available但我没有得到价值latitude and longitude 我在用我的位置监听器类和放置条件除了某些时间之外value没有得到 protec
  • db4o 和/或 Eloquera 数据库的真实体验

    我正在评估两个对象数据库 db4o http www db4o com http www db4o com 和 Eloquera 数据库 http eloquera com http eloquera com 对于即将到来的项目 我必须选择
  • 将请求转发到 Spring MVC 中的另一个控制器

    我想知道是否有一种方法可以将请求从一个控制器转发到另一个控制器 而无需实际更改浏览器中的 URL RequestMapping value myurl public ModelAndView handleMyURL if somecondi
  • 如何以表格形式相邻调用列表中的 2 个连续项目?

    基本上我有一个包含新闻标题的列表视图 第一个标题覆盖顶部 备用标题覆盖第二部分 第三个标题覆盖第三部分 第二个和第三个在列表中是连续的 第一个标题仍然是唯一的标题 列表 我以编程方式将其定义如下 public class NewsListA
  • 向 MKPointAnnotation 添加按钮?

    我只是写了几行代码 然后在尝试向注释点添加详细信息按钮时陷入困境 我不知道如何操作 有谁知道这是怎么做到的吗 下图显示了我想要实现的目标 谢谢 https i stack imgur com kK1Ox jpg https i stack
  • 谷歌浏览器添加了额外的div?

    大家好 我不知道你们怎么想 但我发现在 ubuntu 中 Google Chrome 在 HTML 的 body 底部添加了一个无用的 div 和 z index 1 我可以在任何网页上看到这一点 并且该 div 覆盖了整个页面 这使得 z
  • 在 vuejs 中的图像中包含 router-link 标签

    我可以将 router link 标签包装或封装在图像标签中吗 当我单击图像时 我希望它能够将我路由到所需的页面 是的 你可以 但情况恰恰相反 你需要用 router link 标签包裹你的图像
  • 在 Silverlight 导航应用程序的资源字典中解析故事板中的目标名称

    我有一个故事板 可以在导航上为椭圆设置动画 页面控件 只要我将 Storyboard 保留在 UserControl Resources 内 动画运行就没有问题 我将故事板移至资源词典中 使其可用于多个页面 我可以按预期访问 Storybo
  • C程序连接mysql

    我正在开发一个简单的 C 程序 它必须连接到我的数据库 然后执行查询 然后关闭连接 int main MYSQL conn conn mysql init NULL if conn NULL printf Error u s n mysql
  • 使用 python w/rest api 与 Azure Key Vault 交互

    我对使用最近发布的新服务在 Azure 中进行秘密管理非常感兴趣 我找到了一些示例指南 介绍了如何通过 powershell cmdlet 和 C 与 Key Vault 进行交互 但是还没有找到太多关于开始使用其余 API 的信息 我特别
  • 类型“JavaCompile”属性“options.compilerArgumentProviders.apt$0.name”缺少输入或输出注释。升级到Gradle 7后出现错误

    升级到 Gradle 7 0 并进行构建后 我遇到以下失败 gt Task compileJava FAILED FAILURE Build failed with an exception What went wrong Some pro
  • 调整火狐浏览器中输入类型=“文件”浏览按钮的大小?

    无论如何 是否可以使用CSS或JS来调整firefox中输入类型 文件 浏览按钮的大小 我知道您无法更改按钮的文本 但我需要做的就是使该按钮在 Firefox 中更宽 所以使用 moz css 规则将是完美的 出于安全原因 文件输入按钮的样
  • 在Keras中编译模型后如何动态冻结权重?

    我想在 Keras 中训练 GAN 我的最终目标是开始 但我从最简单的目标开始 理解如何冷冻在这里 适当的权重是必要的 这就是我正在努力解决的问题 在生成器训练期间 鉴别器权重可能不会更新 我想freeze and unfreeze判别器交
  • 使用 libcurl 链接程序时出现未解析的符号

    我知道这是编程问题 但我只是很沮丧地试图找出我做错了什么 我使用的是 Visual Studio 2010 并遵循此处的所有步骤 http curl haxx se libcurl c visual studio pdf http curl
  • .NET 基准测试框架

    是否有用于编写微基准的 NET 框架 例如Japex https japex dev java net or this http ellipticgroup com html benchmarkingArticle html 两者都适用于J
  • Android GCM PHP 未经授权 401 错误

    最近我的 GCM 推送消息通知不再起作用 我没有更改任何内容 在我的 Google API 控制台中 如果白名单 IP 地址 我已经注册了我的专用服务器的 IPV6 但是当我尝试访问 GCM 服务时 我总是收到错误 未经授权 错误401 也
  • 有哪些例子可以说明在程序中使用括号会降低可读性?

    我一直认为括号提高了可读性 但在我的教科书中有这样一句话 使用括号会极大地降低程序的可读性 有人有例子吗 我可以找到很多反例lack括号降低了可读性 但我能想到的作者可能的意思的唯一例子是这样的 if a null a isSomethin