函数式编程 vs 面向对象编程

摘自:JavaScript 函数式编程(一)

个人体验:我组织代码喜欢用类,但对于某些逻辑比如说数据加工,更喜欢使用纯函数去做,因其安全无副作用。

概念比对

面向对象把所有操作和数据都封装在对象内,通过接受消息做相应的操作。比如,对象 Kitty,它们可以接受“打招呼”的消息,然后做相应的动作。

而函数式的抽象方式刚好相反,是把动作抽象出来,比如“打招呼”就是一个函数,而函数参数就是作为数据传入的 Kitty(即 Kitty 进入函数“打招呼”,出来的应该是 Hello Kitty)。

面向对象可以通过继承和组合在对象之间分享一些行为或者说属性,函数式的思路就是通过组合已有的函数形成一个新的函数。

什么是纯函数

纯函数是这样一种函数,对于相同的输入,永远会得到相同的输出,而且没有任何可观察的副作用。

面向对象语言的问题是,它们永远都要随身携带那些隐式的环境。你只需要一个香蕉,但却得到一个拿着香蕉的大猩猩...以及整个丛林。by Erlang 作者:Joe Armstrong

纯函数不会干扰外部的变量,而使用类,其方法属性永远自带隐式能影响全局的可能,

共享可变状态是万恶之源

使用纯函数使代码更有可移植性和测试性。

posted @ 2020-03-15 23:51  Ever-Lose  阅读(212)  评论(0编辑  收藏  举报