《高阶Perl》——1.6 函数式编程与面向对象式编程

简介: 本节书摘来自华章计算机《高阶Perl》一书中的第1章,第1.6节,作者(美)Mark Jason Dominus,译 滕家海,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.6 函数式编程与面向对象式编程

现在停下来看看已经做的。已经有了一个有用的函数,total_size(),它包含了在其他应用中遍历目录结构的有用代码。所以为使total_size()更具普遍意义,把所有与计算大小相关的部分提出来,替换成用户指定的任意函数的调用。结果就是dir_walk()。现在,对于任何需要遍历目录结构并做某事的程序,dir_walk()处理遍历部分,参数函数处理“做某事”部分。通过传递合适的函数对给dir_walk(),可以使它做任何想要它做的事情。已经获得了灵活性与复用dir_walk()的机会,通过提取有用的部分并参数化成两个函数参数。这便是函数式编程风格的核心。

面向对象式(Object Oriented,OO)的编程风格最近受到了更多关注。OO风格的目标和函数式风格的一样:期望通过把软件分割成通用的部分提高它的可复用性。

在一个OO系统中,可以类似地转换total_size(),但是结果看起来会不同。可以把total_size()做成一个目录遍历对象的抽象基类,这些对象有一个方法,dir_walk(),它依次调用两个未定义的虚方法file与directory。 (在C++中,它们称为纯虚方法(pure virtual method)。)这样一个类本身还没有用处,因为缺少file方法与directory方法。为了使用这个类,你要产生一个子类定义file方法与directory方法,然后产生子类的对象。这些对象将全部继承相同的dir_walk方法。

在这个例子中,我认为函数式的风格会带来一个更轻量级和更易用的解决方案,并使参数函数靠近它被使用的地方,而不是陷入一个类文件里。但重要的一点是尽管风格不同,原函数分解成的有用的组成部分却有完全相同的结构。函数式风格使用函数式参数,面向对象式风格使用纯虚方法。虽然本书的剩余部分是关于函数式编程的,但许多技术也将直接适用于面向对象式编程风格。

相关文章
|
6月前
|
并行计算 数据处理 UED
探索程序设计范式:面向对象编程与函数式编程之辩
在现代软件开发中,面向对象编程(OOP)和函数式编程(FP)是两种主流的程序设计范式。本文将对它们进行比较和分析,并探讨如何根据项目需求和个人喜好做出选择。无论是OOP的灵活性和可维护性,还是FP的简洁性和并发性,都有其独特的优势。
|
1月前
|
并行计算 安全 数据处理
函数式编程和面向对象编程有什么区别?
【10月更文挑战第12天】 函数式编程与面向对象编程是两种不同的编程范式。前者强调数学函数的求值、不可变数据和纯函数,后者则以对象为核心,封装数据和方法。函数式编程更关注数据转换和计算过程,而面向对象编程关注对象的定义和交互。两者在数据处理、函数角色、代码结构、并发处理、灵活性和适用场景等方面存在显著差异。在实际开发中,可以根据需求选择合适的编程范式或结合使用。
41 4
|
6月前
|
数据处理 Python
Python中的函数式编程:高阶特性与应用
Python中的函数式编程:高阶特性与应用
35 0
|
6月前
|
测试技术 开发者 Python
探索Python中的函数式编程范式
【2月更文挑战第10天】 本文将深入探讨Python编程语言中的函数式编程范式,介绍其背景、特点以及在实际项目中的应用场景。通过对函数式编程的原理和优势进行分析,帮助读者更好地理解如何利用函数式编程思想提高代码质量和可维护性。
|
6月前
|
大数据 开发者
探索编程范式:面向对象与函数式的抉择
在当今快速发展的软件开发领域,面向对象编程(OOP)和函数式编程(FP)是两种重要的编程范式。本文将深入比较这两种范式的特点、应用场景和优劣势,为读者提供选择时的参考,并探讨如何在实际项目中灵活运用它们。
|
6月前
|
Java 程序员 数据处理
探索编程范式:面向对象编程与函数式编程的比较与取舍
本文将探讨面向对象编程(OOP)和函数式编程(FP)两种主流的编程范式,并比较它们在代码组织、可复用性、并发性和代码风格等方面的特点。通过深入了解它们的优势和不足,读者可以更好地选择适合自己项目需求的编程范式。
256 1
|
Java API
函数式编程概念和应用
函数式编程的核心要素:传入参数,执行逻辑,返回值,也可以没有返回值。函数式的编程风格侧重描述程序的执行逻辑,不是执行过程。
226 0
函数式编程概念和应用
|
存储 架构师 程序员
编程范式(三):函数式编程
编程范式(三):函数式编程
322 0
|
编译器 Go
第六章 函数式编程
函数是组织好的、可重复使用的、用于执行指定任务的代码块。Go语言中支持函数、匿名函数和闭包,并且函数在Go语言中属于“一等公民”。
80 0
第六章 函数式编程
|
Java
函数式编程的概念
题外话,最近在学习scala和jdk8的时候接触到了函数式编程这一概念,于是学习了下当做笔记。 函数式编程是种编程方式,它将电脑运算视为函数的计算。函数编程语言最重要的基础是λ演算(lambda calculus),而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)。
1380 0