上一篇讲到了一个Pointfree的例子。
Pointfree仍是一种新事物,仍还在快速演绎变化中,因此笔者不会刻意为这种编程风格下定义,而是通过列举更多的例子,可以让读者了解什么是Pointfree。
//todo
Pointfree 风格需要一定的时间才能习惯。可能并不需要所有的地方都没有参数。有时候知道某些 Ramda 函数需要多少参数,也是很重要的。
但是,一旦习惯了这种方式,它将变得非常强大:可以以非常有趣的方式将很多小的 pointfree 函数组合起来。
Pointfree 风格的优点是什么呢?人们可能会认为,这只不过是为了让函数式编程变得“好看一点”的学术活动而已。然而,我认为还是有一些优点的,即使需要花一些时间来习惯这种方式也是值得的:
- 它让编程更简单、精练。虽然这并不总是一件好事,但大部分情况下是这样的。
- 它让算法更清晰。通过只关注正在组合的函数,我们可以在没有参数的干扰下,更好地了解发生了什么。促使我们更专注于正在做的转换的本身,而不是正被转换的数据。
- 它可以帮助我们将函数视为可以作用于不同数据的通用构建模块,而非对特定类型数据的操作。如果给数据一个名字,我们的思想便会被禁锢在:"需要在哪里使用我们的函数";如果去掉参数,便会使我们更有创造力。
{% hint style="info" %} Thinking in Ramda: Pointfree Style {% endhint %}