软件设计17丨函数式编程:不用函数式编程语言,怎么写函数式的程序?

前面几讲,我们讲了结构化编程和面向对象编程,对于大多数程序员来说,这些内容还是比较熟悉的。接下来,我们要讨论的函数式编程,对一些人来说就要陌生一些。

你可能知道,Java 和 C++ 已经引入了 Lambda,目的就是为了支持函数式编程。因为,函数式编程里有很多优秀的元素,比如,组合式编程、不变性等等,都是我们值得在日常设计中借鉴的。即便我们使用的是面向对象编程语言,也可以将这些函数式编程的做法运用到日常工作中,这已经成为大势所趋。

但是,很多人学习函数式编程,刚刚知道了概念,就碰上了函数式编程的起源,遇到许多数学概念,然后,就放弃了。为什么学习函数式编程这么困难呢?主要是因为它有一些不同的思维逻辑,同时人们也缺少一个更好的入门方式。

所以,在这一讲中,我打算站在一个更实用的角度,帮你做一个函数式编程的入门。等你有了基础之后,后面两讲,我们再来讨论函数式编程中优秀的设计理念。

好,我们开始吧!

不断增加的需求

我们从一个熟悉的场景出发。假设我们有一组学生,其类定义如下:

// 单个学生的定义

class Student {

// 实体 ID

private long id;

// 学生姓名

private String name;

// 学号

private long sno;

// 年龄

private long age;

}

// 一组学生的定义

class Students {

private List<Student> students

}

如果我们需要按照姓名找出其中一个,代码可能会这么写:

Student findByName(final String name) {

for (Student student : students) {

if (name.equals(student.getName())) {

return student;

}

}

return null;

}

这时候,新需求来了,我们准备按照学号来找人,代码也许就会这么写:

Student findBySno(final long sno) {

for (Student student : students) {

if (sno == student.getSno()) {

return student;

}

}

return null;

}

又一个新需求来了,我们这次需要按照 ID 去找人,代码可以如法炮制:

Student findById(final long id) {

for (Student student : students) {

if (id == student.getId()) {

return student;

}

}

return null;

}

看完这三段代码࿰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员zhi路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值