面向懒惰开发人员的功能性JavaScript(与我类似)


面向懒惰开发人员的功能性JavaScript(与我类似)

功能的JavaScript,懒惰的补救

其中一个是带动我的求知有关编程技术的核心概念一直是我自己的懒惰。 毕竟,有什么吸引我的电脑回来时,我刚开始和他们玩了一种观点,他们可以为我做的事情。 我所要做的就是坐下来,告诉他们我想要的东西。

但我很快就发现,电脑是非常字面。 除非我告诉他们,正是我所预期的明确和毫不含糊,用他们能够理解的语言,他们会很少给我回了我的初衷。 和懒惰,我不想任何工作难度比我必须,来表达我的意图。

然后我看到了从JavaScript的一些必要的单行到大,令人费解的面向对象的应用程序去,似乎有看不到尽头的复杂性。

我开始寻找办法,使编码更轻松,更有趣。 而搜索导致我直接函数式编程。

新的方式来看待问题

我第一次接触到的函数式编程的时候,我在一家小型创业在旧金山的高级前端工程师的工作。 有一天,一个编程向导谁在该公司的研究小组的肠子深吃力听到我抱怨一些凌乱的状态相关的代码我工作的,并诱使我进入会议室与花哨的承诺。 在那里,他开始给我即兴三个小时的介绍Haskell中 ,一个典型的函数式编程语言,包括函数式编程的理念的一个粗略的解释。

他迷惑我仿函数故事和单子我看着消失的变量和方法割断,并在不熟悉的类型签名合并到一起。 当时,这一切似乎是陌生的巫术,但他安慰我说的JavaScript也有功能性的能力,他们将带领我的救赎。

这一承诺让我继续走下去,因为我开始钻研这个异国情调的境界。 我认为函数式编程技术可以给我更好的方法来打散问题并解决它在微小的,集中的叮咬。 我被这个可能性,我可以让我的代码更清洁,更便携,更易于管理,更易读,更容易维护激动。

一路上,我发现大约在JavaScript函数式编程,我将深入到今日,一些奇妙的事情。

高阶函数

一个使JavaScript的处理函数式编程技术的东西是它支持的事实高阶函数 功能被视为在JavaScript中的一等公民。 这意味着,一个功能可以采取其他功能参数,并且可以返回的函数作为结果。 由于是直接内置到JavaScript在最基本的层面,语法是已经熟悉。

使用高阶函数是朝着想着你的代码为一组可拆开并放回一起以不同的方式来解决不同的问题,独立的单任务组件的第一步。 一个功能可以很容易地编写只是路过它,然后在执行过程中调用它,可选择返回一个新功能将在稍后的时间再次调用调用任何其他功能。 由于功能通过引用传递,他们携带它们的上下文与他们在封闭件,因此它们可以在该时间存在,他们被称为而不是依赖于外部的状态的换档可能性的状态范围内运作。

无副作用纯函数

函数式编程也与它带来的功能应该怎么写一些强烈的意见。 在功能编程纯函数是理想的。 纯函数不会互相影响与存在本身之外的任何变量。 他们不会让在自己的范围内没有定义的变量的任何变化,他们不依赖于比那些在作为参数传递等外部值。

给定完全相同的一组输入时,使其更容易创造稳健和可靠的测试纯函数总是返回相同的结果。 这意味着你可以在结果从函数保持相同的数,只要你传递是相同的参数。 这也可以让你做一些优化,如记忆化,通过在函数内部数组存储结果,并做计算时,一个新的输入进来之前针对阵列检查避免了复杂的计算。

组合和分解

当你开始建立你的程序出的纯函数,图案你会发现自己创建将有更多的与您如何建立使用简单的互换件复杂的操作做。 因为JavaScript的利用的高阶函数的能力,注重纯函数具体到他们所要完成的任务的一个小型图书馆可以一起组成根据需要进行高度复杂的操作。

纯函数的另一个优点是,他们执行一项任务,并返回一个结果。 通过仔细的命名,这些纯函数几乎成了自文档。 而更多你建立你的代码进行的独立的单任务的功能,就越深入嵌套的复杂性需要维护和文档。 你的挑战变得想着如何打破你的问题分解成小的一口大小的块,然后在合理的方式共同组成他们。

装配到现有的JavaScript

如JavaScript从浏览器中简单的俏皮话演变成一个复杂的生态系统维护应用程序,语言的语法也在演变。 与ECMAScript的5,阵列变得函子,原生支持地图为跨越所述阵列的每个元件施加功能,并返回一个新的数组方法。 阵列现在也有用于功能的技术,如减少和本机方法过滤

在ECMAScript中2015年及以后新功能包括方便箭头的功能 ,使其更容易,更直观地写代码的匿名在线功能。 解构传播运营商也更容易将工作与可能包含在他们被称为时间未知元素数量的数组。 发电机给我们一些神奇的本地访问延迟计算 ,就像我们的朋友谁使用Haskell和红宝石已经做了多年。

最重要的是,我意识到,功能技术是唯一解决问题的方式。 JavaScript的提供了许多选择,在某些情况下,当务之急还是面向对象的方法更有意义。 添加函数式编程到我的剧目刚刚扩大的可能性,我看到,当我一个问题提出的范围。 这些天,我一般不坚持了我所有的JavaScript代码的功能技术,但我经常发现一些功能仙尘品牌推理每个编程挑战更加平易近人洒。

一种新的方式来学习函数式编程

当我开始应用功能技术,我看到了我的计划,我的解决问题的能力,和我的关系与我的工程师提高。 我的代码是更清洁,更自我记录,并且易于维护和讨论。 而我在做更少的工作和享受过程了。

最后,我想与大家分享大家的思维我遇到了这个重点,功能性的方式。 于是我开始写文章SitePoint关于功能的JavaScript ,以及一些我接触到这些很多年前的那个小的会议室奥秘的经过。 这些文章的普及,导致我产生功能性的JavaScript的课程 ,我很兴奋今年早些时候看到释放。 令人高兴的是,我看着别人急切地开始学习功能的技术,并将其应用到自己的开发实践与积极评价。

面向懒惰开发人员的功能性JavaScript(与我类似)

我希望你走出去,探索不同的编程技术,为您和您的团队的工作。 如果您想了解在使用功能的技术,而不是琢磨的利益,而不是给课程一个尝试,让我知道它是如何影响你的代码,你的思维过程,你的职业关系。 它不仅是我的工作,而且我的职业生涯有显著的影响。 我想你会发现,添加功能性问题解决到您的编程储备不只是懒惰的, 也是生产力和乐趣。

是功能性的JavaScript编程值得吗?

成为谁知道功能和命令代码之间的差异的显影剂。

成为谁可以面向对象编程和功能之间切换的开发商。

认识的时候最好是比其他的技术使用。

具体方法如下:我会告诉你我的函数式编程课程 添加递归,组成,映射和更多的开发工具腰带,使你的代码更易于阅读,少重复。

  1. 什么是函数式编程?
  2. 与递归工作
  3. 了解柯里
  4. 地图,减少和过滤器
  5. 功能组合
  6. 我们的经验

面向懒惰开发人员的功能性JavaScript(与我类似)

From: https://www.sitepoint.com//functional-javascript-for-lazy-developers-like-me/