从事编程十年的程序员深谈JavaScript函数式

本文是一位有着十年经验的程序员分享他对JavaScript函数式编程的深入理解和实践心得,包括打破传统观念,理解FP的核心理念,以及在实际项目中应用FP遇到的挑战。他强调了使用FP带来的代码清晰性和团队协作优势,同时也指出了一些与主流工具不兼容的问题,如类型检查和调试的困难。最后,他提出探索结合不同编程范式的可能性,以寻求更好的开发体验。
摘要由CSDN通过智能技术生成

在故事开始之前,我已经是一个拥有 10 年以上经验的专业程序员。先是 C++,然后是 C#,再然后是 Python。我能够写各种代码,我对模式和原则的掌握程度已经让我自信到看不到有学习新东西的必要。我认为自己已经“掌握了 90%的编程精髓”。

2016 年 5 月,我们开始开发 XOD 项目 (https://xod.io)。XOD 是一款为数字爱好者打造的可视化编程 IDE。为了保持它的随意性,我们必须提供一个 Web 版的 IDE。Web 版?那肯定非 JavaScript 莫属了!全部使用 JavaScript 开发的 IDE?是的,但我们不能将就使用 jQuery,我们需要更好的东西。

那时候,一种新的重量级前端开发技术出现了:一项叫做 React 的技术以及伴随而来的 Flux/Redux 模式。在它们的文档和各种相关文章中,总是伴随着函数式编程的概念。于是我开始研究 FP。

哇!就像发现了新大陆一样。当然,我也听说过 Haskell、OCaml、LISP,但我曾经认为这些程序员是那种存粹为了编程而编程,而不是为了发布产品而编程的边缘知识分子。而现在,我开始对自己的专业水平感到怀疑。

函数式和反应式编程原理根植于 XOD 的基因当中,但在开始开发之前并不明显。我“发明”的或从其他产品借鉴的很多东西其实都是以 FP 为基础。因此,我们将用一些重量级的现代 FRP JavaScript 创建一个 FRP 编程环境。

FP 为项目带来了坚实的基础和灵活性,我不想再回到“经典”的编程模式,并且在可预见的未来,我会继续基于函数编程原则来开发所有的新项目。

打破障碍

在 NPM 上可以找到大量的 JavaScript 函数式编程库,其中最值得一提的是 Ramda(http://ramdajs.com)。它有点像 Lodash 或 Underscore,不过它是基于 FP 的。Ramda 提供了几十个函数用于处理数据和组合函数。

函数本身是很好的,不过需要与一些 FP 对象配合使用。另一个库 Ramda Fantasy(https://github.com/ramda/ramda-fantasy)就提供了这样的 FP 对象。除此之外,还有其他一些 FP 库,如 Sanctuary、Fluture、Daggy。不过建议先从 Ramda 开始,先让你的大脑进入状态。

这是你可能会遇到的第一个障碍,就是在查看 FP 库的文档时,你会发现很多让人抓狂的问题。混乱的参数顺序、外来语术语、不明确的函数值,这些问题会促使你停止尝试并退回到传统的编程模式。

第一点࿰

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值