《高阶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方法。

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

相关文章
|
4月前
|
并行计算 数据处理 UED
探索程序设计范式:面向对象编程与函数式编程之辩
在现代软件开发中,面向对象编程(OOP)和函数式编程(FP)是两种主流的程序设计范式。本文将对它们进行比较和分析,并探讨如何根据项目需求和个人喜好做出选择。无论是OOP的灵活性和可维护性,还是FP的简洁性和并发性,都有其独特的优势。
|
4天前
|
C语言 iOS开发 MacOS
Objective-C是一种面向对象的编程语言,它扩展了C语言,添加了面向对象编程的特性
Objective-C是苹果公司的面向对象编程语言,用于iOS和macOS应用开发。它扩展了C语言,包含类定义(接口和实现)、对象创建、消息传递、属性、协议、块和类别等语法特性。例如,类通过`@interface`和`@implementation`定义,对象用`alloc`和`init`创建,方法通过消息传递调用。属性简化变量声明,协议定义可选方法集合,块支持代码块作为参数,类别用于扩展已有类。错误处理常使用NSError对象。要深入了解,建议查阅相关教程和文档。
20 0
|
14天前
|
算法 Python
Python面向对象oop编程(二)
Python面向对象oop编程(二)
|
2月前
|
测试技术 开发者 Python
探索Python中的函数式编程范式
【2月更文挑战第10天】 本文将深入探讨Python编程语言中的函数式编程范式,介绍其背景、特点以及在实际项目中的应用场景。通过对函数式编程的原理和优势进行分析,帮助读者更好地理解如何利用函数式编程思想提高代码质量和可维护性。
|
4月前
|
并行计算 数据处理 开发者
Python函数式编程:探索优雅的编程范式
传统的编程范式中,命令式编程和面向对象编程占据主导地位。然而,Python函数式编程作为一种新颖而强大的范式,通过引入函数作为一等公民和不可变性等特性,为开发者提供了更加优雅和灵活的编码方式。本文将深入探讨Python函数式编程的概念与应用,包括高阶函数、纯函数、惰性计算以及函数式编程在并行处理和数据处理方面的实际应用。
|
算法 Java Scala
函数式编程基础介绍|学习笔记
快速学习函数式编程基础介绍。
78 0
函数式编程基础介绍|学习笔记
|
Java Scala 开发者
函数式编程几个重要概念|学习笔记
快速学习函数式编程几个重要概念。
59 0
函数式编程几个重要概念|学习笔记
|
Java API
函数式编程概念和应用
函数式编程的核心要素:传入参数,执行逻辑,返回值,也可以没有返回值。函数式的编程风格侧重描述程序的执行逻辑,不是执行过程。
191 0
函数式编程概念和应用
|
存储 架构师 程序员
编程范式(三):函数式编程
编程范式(三):函数式编程
284 0
|
Java
函数式编程的概念
题外话,最近在学习scala和jdk8的时候接触到了函数式编程这一概念,于是学习了下当做笔记。 函数式编程是种编程方式,它将电脑运算视为函数的计算。函数编程语言最重要的基础是λ演算(lambda calculus),而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)。
1333 0