小编典典

OOP vs 函数式编程 vs 程序化

all

这些编程范式之间有什么区别,它们是否更适合特定问题,或者是否有任何用例偏爱其中一种?

架构示例赞赏!


阅读 61

收藏
2022-05-24

共1个答案

小编典典

它们都有各自的优点——它们只是解决相同问题的不同方法。

在纯粹的程序风格中,数据往往与对其进行操作的函数高度解耦。

在面向对象的风格中,数据往往带有一组函数。

在函数式风格中,数据和函数倾向于彼此有更多的共同点(如在 Lisp 和 Scheme
中),同时在函数的实际使用方式方面提供更多的灵活性。算法也倾向于根据递归和组合而不是循环和迭代来定义。

当然,语言本身只会影响首选哪种风格。即使是在像 Haskell 这样的纯函数式语言中,你也可以用过程式的风格来编写(尽管这是非常不鼓励的),甚至在像 C
这样的过程式语言中,你也可以用面向对象的风格来编程(比如在 GTK+ 和EFL API)。

需要明确的是,每种范式的“优势”仅仅是对算法和数据结构的建模。例如,如果您的算法涉及列表和树,那么函数式算法可能是最明智的。或者,例如,如果您的数据是高度结构化的,那么将其组合为对象(如果这是您的语言的本机范式)可能更有意义
- 或者,它可以很容易地编写为 monad 的功能抽象,即是 Haskell 或 ML 等语言的原生范例。

您选择使用哪个对您的项目和您的语言支持的抽象更有意义。

2022-05-24