不要进行无谓的OOP与FP争论 - Mathias Verraes

19-07-24 banq
         

https://twitter.com/mathiasverraes/status/1153615691397943297

我希望我们无需争论OOP与FP,而应该开始辩论个人范式。不可变性,封装,全局状态,单一赋值,actor模型,纯函数,类型系统中的IO,继承,组合......所有这些在OOP或FP中都是完全可能的。

有些更好,有些更糟糕,有些高度依赖于背景,让我们想出来,而不是像OOP和FP一样抨击伞术语。并且可能还有更多的范例需要发现。

在#Haskell中,您可以为一个模块选择不导出类型构造函数,只导出在数据结构上运行的智能构造函数和操作函数。听起来很接近封装

IO: 你能使用Ports&Adapters模式,迁移你的IO到系统边缘,没有理由不移植到类型系统,也没有理由让其成为FP语言的专利。

Lambdas:不再是FP独有的。PHP有一个功能,您可以使用__invoke将对象基本上转换为lambda。您可以使用它来做一些让人想起Reader Monad或Writer Monad的事情。不完全相同但具有相似的语义。

我的假设是FP的许多支持者都是专门从事不良OOP系统和良好FP系统工作的人,但从来没有在良好的OOP和糟糕的FP系统中工作过。

遗产通常是糟糕OOP的典型代表。通过将其替换为“组合”,您可以更好地实现任何继承。但是我们可以通过讨论何时何地不使用继承来启发讨论来改进讨论,而不是完全解雇它。