Clojure 集合与函数式编程
1. 函数式编程基础
函数式编程是一种编程范式,不同人对其有不同的理解,但也存在一些共识,其带来的好处包括:
- 代码更易复用
- 函数更易测试
- 函数更易理解
为获得这些好处,需要考虑以下几点:
- 将函数视为一等公民
- 函数应尽量减少副作用(不改变任何状态)
- 函数仅依赖其参数(引用透明性)
下面通过 Java 中的两个函数示例来说明,即使在 Java 中,编写无副作用和上下文依赖的函数也能带来好处。
// 示例 1
public void payRent(BigDecimal amount) {
User user = getCurrentUser();
if(user.payAmount != amount) {
System.out.println("Cannot pay");
} else {
user.money -= amount;
}
}
测试这个函数可能会遇到问题:
1. 需要知道如何获取当前用户,可能需要模拟数据库或会话存储,最坏情况下需要真实的会话存储服务。
2. 难以确定是否支付成功。
// 示例 2
public boolean payRent(User user, BigDecimal amount, ValidateStrategy strategy) {
if(str
超级会员免费看
订阅专栏 解锁全文
386

被折叠的 条评论
为什么被折叠?



