CodeGym /Java 博客 /随机的 /面向对象与函数式编程。哪个更好?
John Squirrels
第 41 级
San Francisco

面向对象与函数式编程。哪个更好?

已在 随机的 群组中发布
当开始学习 Java 作为您的第一门编码语言时,您将不可避免地需要学习一些关于编程和软件开发的基本知识。其中之一是编程范式和它们之间的差异。函数式编程和面向对象编程是我们今天要研究的两种编程范式或风格,试图了解它们的全部内容以及函数式编程和 OOP 的不同之处。了解编程范式将是任何认真的程序员都需要的基础理论知识的重要组成部分,特别是如果他/她的目标是长期从事软件开发。 面向对象与函数式编程。 哪个更好? - 1

什么是编程范式?

但是为了理解 OOP 和函数式编程 (FP) 之间的区别,我们确实需要从这里的基础知识开始,并阐明编程范式到底是什么。编程范式是一种根据编码语言的特性对编码语言进行分类的方法,这些特性组合在一起形成范式或风格,是一种特定的计算机编程方式。许多特性决定了编程范式,包括对象、控制流、模块化、中断或事件等。就像编码语言一样,每种编程范式都有自己的优缺点、优点和缺点、优点和缺点,在为您想要的项目选择语言时,您应该考虑到这一点。

什么是面向对象编程?

面向对象编程(OOP)是一种以对象为关键的概念性编程范式。在此模型中,对象用于表示您正在编程的事物。您也可以说 OOP 使用抽象来创建基于现实世界的模型。许多流行的编程语言都支持 OOP,包括 Java、C++、Python 和 PHP。来自其他先前建立的编程范例的许多技术是 OOP 的一部分,例如模块化、多态性、封装、抽象和继承。

什么是函数式编程?

函数式编程也是一种编程范式,它侧重于评估函数和开发程序代码的结构,最终避免任何变化的状态和可变数据。函数式编程是关于评估表达式以确保函数的输出是相同的,在为函数提供完全相同的输入的情况下。有许多函数式语言,其中最流行和使用最广泛的是 Common Lisp、Scheme、Clojure、Wolfram Language、Erlang、Haskell 等。还有许多语言支持函数式编程或具有此范例的一些已实现功能。C++、Python、Scala、PHP、Kotlin 和 Perl 都在其中。函数式编程在一些科学和其他专业语言中也非常重要,比如统计学中的 R,

比较 OOP 和函数式编程

那个解释没有多大帮助,是吗?让我们试着从更基本的角度来看这个问题。任何计算机程序的主要基本组成部分是什么?它们是数据(程序被允许知道什么)和程序化行为(程序被允许用这些数据做什么)。OOP 和 FP 接近计算机编程的方式的主要区别是什么?好吧,OOP 使用的方式依赖于将数据和与该数据相关的行为组合到一个地方,这个地方被称为“对象”。使用对象允许程序员简化他们程序的工作方式。另一方面,函数式编程声明数据和行为应该保持两个不同的东西,而不是为了整体清晰、易于理解的代码和更高的代码可重用性而分开。

OOP 和 FP 之间的差异

为了尽可能清楚地说明 OOP 和 FP 之间的区别(在一篇相对较短的文章中),让我们尝试一一说明这两种范式之间的主要区别。

一、概念及定义。

OOP 基于对象的概念作为开发人员创建的抽象数据类型,可以包括多个属性和方法,甚至可以包含其他对象。FP 的核心重点是功能的评估,每个功能执行特定的任务。

2. 基本要素。

OOP 中的基本元素是对象和方法,使用可变(创建后可以修改)数据。在 FP 中,函数和变量是最基本的元素,而函数中的数据始终是不可变的(创建后无法修改)。

3.编程模型。

OOP 遵循命令式编程模型。FP 遵循声明式编程模型。

4.并行编程。

OOP 不支持并行编程。FP 支持并行编程。

5.语句执行顺序。

在 OOP 中,语句在执行时需要按照指定的方法顺序执行。在 FP 中,语句在执行时不需要遵循任何特定的顺序才能成功。

6. 访问说明符。

OOP 语言具有三个访问说明符(设置类、方法和其他成员的可访问性的关键字):Public、Private 和 Protected。基于 FP 的语言没有任何访问说明符。

7. 灵活性和添加数据/功能。

灵活性是 OOP 语言的核心优势之一,因为它们提供了一种向现有程序添加新数据和功能的简便方法。使用 FP 语言,向您的程序中添加新事物变得不那么方便而且更加复杂。

8. 数据隐藏和安全。

安全性是面向对象编程的另一个优势,因为 OOP 语言支持数据隐藏,这最终允许创建安全的程序。顺便说一下,我们在另一篇文章中讨论了为什么 Java 被认为是一种安全的语言(如果这完全正确的话) 。使用函数式编程,数据隐藏是不可能的,如果你想用 FP 语言开发一个安全的程序,这是一个很大的障碍。

OOP 与 FP。哪个更好?

那么,如果 OOP 编程范式与 FP 开战,谁会赢?显然,这是一个开玩笑的问题。但如果不是,我们肯定会打赌 OOP 踢 FP 的屁股(只是因为 Java 在 OOP 的团队中)。撇开玩笑不谈,这些风格中的每一种都有相当直接的优缺点。如今 OOP 更为普遍,因为这种风格更适用于大型和复杂的项目。对象和方法通常很容易理解,这使得 OOP 编程相对容易掌握,即使对于初学者也是如此。一般来说,面向对象的编程在后端开发中工作得很好,因为当你在许多不同的系统和平台上工作时,OOP 允许你将所有东西打包(放入一个对象中)并保护它免受任何未授权方的侵害。较低的代码可重用性和潜在的意外副作用以及 OOP 代码可能对流程产生的影响是 OOP 模型的主要缺点。另一方面,函数式编程在包含和指定复杂性时很好,因此 FP 通常可以用于前端开发,代码整洁和函数透明更为重要,让您获得可靠的性能而不会产生意想不到的副作用. 当涉及到可能需要大量扩展的复杂系统的开发时,与 OOP 相比,FP 的效率和适用性较低。所以 FP 经常可以用在更看重干净代码和透明函数的前端开发中,让你获得可靠的性能,没有意想不到的副作用。当涉及到可能需要大量扩展的复杂系统的开发时,与 OOP 相比,FP 的效率和适用性较低。所以 FP 经常可以用在更看重干净代码和透明函数的前端开发中,让你获得可靠的性能,没有意想不到的副作用。当涉及到可能需要大量扩展的复杂系统的开发时,与 OOP 相比,FP 的效率和适用性较低。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION