我想指出这篇文章中的许多错误,仅仅是因为它是…
我想指出本文中的许多错误,只是因为它错误地表示了OOP和FP。 OOP不一定仅用于封装。 OOP的基础是继承。 从理论上讲,它允许通过继承将方法从父级传递给子级,从理论上讲,它允许大量的代码重用。 但是,它有一些大问题…… 我认为缺乏可重用性的是面向对象的语言,而不是功能语言。 因为面向对象语言的问题是他们拥有了它们所伴随的所有隐式环境。 您想要香蕉,但是得到的是一只大猩猩,拿着香蕉和整个丛林。 如果您具有透明的参照代码,并且具有纯函数(所有数据都包含在其输入参数中,并且所有内容都消失并且不留任何状态),那么它将具有非常好的可重用性。 〜Erlang的创建者Joe Armstrong谈软件的可重用性。 当然,幸运的是,在JS中我们没有经典的OOP继承。 我们有原型继承。 这意味着我们实际上并没有引入整个森林,而只是引用了。 在JS中,我们可以像使用JS“类”一样轻松地用FP封装逻辑。 JS模块系统允许完全封装。 我可以编写FP样式的代码,将我的所有逻辑封装为具有逻辑结构和关注点分离的离散部分。 我可以在模块中编写私有函数,也可以在从模块中导出它们公开的公共函数中编写私有函数。…