新 JavaScript 管道操作符:将任何内容转换为单行文字

有了 JavaScript 管道操作符,您就可以清除代码中的临时变量和隐蔽嵌套,大大提高代码的可读性、效率和质量。

【参考文献】

文章:《New JavaScript pipeline operator: transform anything into a one-liner》

作者:Tari Ibaba

上述译文仅供参考,具体内容请查看上面链接,解释权归原作者所有。

【关于TalkX】

TalkX是一款基于GPT实现的IDE智能开发插件,专注于编程领域,是开发者在日常编码中提高编码效率及质量的辅助工具,TalkX常用的功能包括但不限于:解释代码、中英翻译、性能检查、安全检查、样式检查、优化并改进、提高可读性、清理代码、生成测试用例、有趣的图表生成以及语音助手托克斯等。

TalkX建立了全球加速网络,不需要考虑网络环境,响应速度快,界面效果和交互体验更流畅。并为用户提供了Open AI的密钥,不需要自备ApiKey,不需要自备账号,不需要魔法。

TalkX产品支持:JetBrains (包括 IntelliJ IDEA、PyCharm、WebStorm、Android Studio、HBuilder、VS Code、Goland)

1

有了管道运算符,你就不会再写这样的代码了:

2

然后开始编写这样的代码:

3

如此简洁优雅,令人耳目一新!所有那些临时变量都不见了–更不用说想出这些名字and键入它们所花的时间了。

您可能听过菲尔-卡尔顿(Phil Karlton)说过的一个部分属实的笑话:“计算机科学中只有两件难事:缓存失效和命名”。

使用 JavaScript 管道运算符可以清除杂乱,提高可读性,并以更直观的方式编写数据转换代码(基本上是所有代码)。

应尽可能避免冗长,这比重复使用简短命名的变量更有利于压缩代码:

4

希望几乎没有人会经常这样编写代码。当大规模使用时,这是一种相当可怕的技术;这是一个完美的例子,说明了我们为什么要拥抱不可变性和类型系统。

与管道运算符不同的是,我们无法确定变量是否总是包含我们在任何给定点上设置的值;我们需要爬升作用域来查找重新分配。我们本可以在代码的较早位置使用 _,但它在代码中不同位置的值是无法保证的。

5

现在我们只是使用了下划线,所以如果不查看这些重赋值的右侧,你就无法快速知道变量的类型,除非你有像 VS Code 这样的智能编辑器(不过我想你可以说这并不重要,因为它们应该是 "临时 "的–至少在它们不是之前是这样!)。

总之,可读性很差。脆弱、不稳定。对于新手来说,理解难度增加了 5 倍。此外,有人会说下划线 “丑陋”,尤其是在 JavaScript 等语言中,几乎不会出现下划线。

6

好吧,那我们为什么不避开这些临时下划线呢?

7

真是一团糟。下划线不见了,但世界上有谁能一眼就看明白呢?要想知道数据是如何在这段代码中流动并进行必要的调整,谈何容易?

一目了然–这正是我们编写每一行代码所应追求的目标。

管道运算符大大优于其他方法,它既能让我们免于使用临时变量,又具有可读性。它就是为此而设计的。

8

这里的%只存在于这一特定管道中。

方法链?

谁没有使用和组合过大量流行的数组方法,如mapfiltersort?在涉及任何形式的列表操作的应用程序中,很难避免这种情况。

9

这其实很好。这里也没有任何临时变量或无法阅读的嵌套,我们可以轻松地从头到尾跟踪整个链。

通过格式化,我们可以在链中的任意位置轻松添加更多方法;像 VS Code 这样功能强大的编辑器可以通过 Ctrl + UpCtrl + Down快捷键轻松调换两个方法的处理顺序。

10

核心 http 和 jQuery 等库会这样设计是有原因的:

11

方法链的问题在于,我们无法在所有地方都使用它。如果类不是这样设计的,我们就会陷入困境。

对于生成器方法、async/await待以及对象外部的函数/方法调用,它的效果并不好,就像我们在这里看到的那样:

12

但所有这些以及更多的功能都需要管道操作符,甚至对象字面和async``````import函数。

13

本可以是 F# 管道

我们本可以使用与 F# 管道非常相似的管道操作符,但上面的结果却变成了这样:

14

有一个替代设计。但你已经可以看出,这是个低劣的替代方案: 只允许使用单功能参数,而且操作更加繁琐。除非操作已经是单参数函数调用。

它对async/await的怪异处理也是它被拒绝的一个重要原因–还有内存使用的问题。所以,在 JS 中忘掉 F# 管道吧!

立即使用管道操作员

有了巴别塔,您就能做到。

Babel 有一个很好的习惯,那就是在正式集成到语言中之前,就已经实现了相关功能;它在顶级等待、可选链等方面都是这样做的。管道操作符也不例外。

只需使用 @babel/plugin-proposal-pipeline-operator 插件即可。

当然,这是可选项,但不会持续太久。

更漂亮的代码格式已经准备就绪。

15

尽管我们不能说 VS Code 或 Node.js 也是如此:

16

现在甚至有人猜测,%不会是管道中流传的最终符号;让我们拭目以待,看看一切会如何发展。

最后的想法

看到语言中出现令人兴奋的新功能总是令人高兴的。有了 JavaScript 管道操作符,您就可以清除代码中的临时变量和隐蔽嵌套,大大提高代码的可读性、效率和质量。

⚠️:文章翻译上如有语法不准确或者内容纰漏,欢迎各位评论区指正。

【关于TalkX】

TalkX是一款基于GPT实现的IDE智能开发插件,专注于编程领域,是开发者在日常编码中提高编码效率及质量的辅助工具,TalkX常用的功能包括但不限于:解释代码、中英翻译、性能检查、安全检查、样式检查、优化并改进、提高可读性、清理代码、生成测试用例、有趣的图表生成以及语音助手托克斯等。

TalkX建立了全球加速网络,不需要考虑网络环境,响应速度快,界面效果和交互体验更流畅。并为用户提供了Open AI的密钥,不需要自备ApiKey,不需要自备账号,不需要魔法。

TalkX产品支持:JetBrains (包括 IntelliJ IDEA、PyCharm、WebStorm、Android Studio)、HBuilder、VS Code、Goland.

  • 16
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值