【问题标题】:Pros and Cons of chaining functions using lodash _.chain()使用 lodash _.chain() 链接函数的优缺点
【发布时间】:2017-03-31 00:05:35
【问题描述】:

我个人避免链接,除非它的函数集非常少。

我的团队不一样。

Lodash _.chain()

我在使用 _.chain() 时遇到的问题是,如果有很多函数链接到它。并且将来如果其中一个函数出现任何错误,则需要两倍的时间进行调试,然后通过少量函数来实现相同的目标。

我想听听 JavaScript 社区对此有何看法。

谢谢。

【问题讨论】:

  • bug 就是 bug,chain 只是去掉了杂物
  • @dandavis 是的,错误肯定是错误,但我想说的是在广泛的背景下。阅读代码比其他方式困难得多。
  • @DanielLizik 是的,已经读过,但我发现 stackoverflow 的响应更加真实和有效
  • 我不希望如此糟糕地节省空间,事情变得不那么可读了,但有时,我发现一些链更容易阅读,比如动词列表。如果你开始被击败,或条件,或需要几个级别的缩进,可能是时候将链(呵呵)分解成几组较小的链。

标签: javascript underscore.js lodash


【解决方案1】:

在使用 ES5.1 代码时,我曾经是_.chain 方法的大力倡导者。它允许使用灵活的方法实现数据的语义流,我可以轻松地进行交换。通过强制您编写大部分纯函数,它有助于鼓励使用集合的不可变数据流。

根据我的经验,最大的缺点是需要明确定义链中允许哪些方法,或者隐式依赖 Lodash 允许链中的所有方法。这可能会导致您的构建变得臃肿并且难以确定链中函数的来源。

此外,随着 ECMAScript 的成熟,我发现依赖 Lodash 收集方法的必要性越来越少。您可以使用 filtermapsomeallfindfindIndex 等完成很多您已经使用 Lodash 的事情。

另一个值得探索的途径是_.flow 方法,它接受一系列回调并将它们链接在一起。它有很多 Lodash 的链式的好处,而不会混淆如何定义链式方法及其来源。

【讨论】:

  • 我还可以补充:_.chain 的一个缺陷是需要在需要值时调用.chain()。如果您按照可预见的方式执行此操作,则很容易捕获,但绕过链会导致复杂且难以推理的情况,即您不知道是否调用了链。
猜你喜欢
  • 2016-06-06
  • 1970-01-01
  • 2012-05-15
  • 1970-01-01
  • 2014-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-20
相关资源
最近更新 更多