python函数和代码复用思维导图_函数式编程库:Ramda函数思维导图,帮你快速选择要用的函数...
为什么要用ramda库
Pointfree 的概念,也就是函数级别的抽象,我们经常说复用逻辑,复用逻辑的关键的就是抽象,无论是面向对象还是架构设计。但是很少有人谈到函数级别的复用,当我了解ramda库的时候,我觉得这是一个很不错的方案。举个例子
假如我们有这么一段数据,需要筛选其中属性isMan: true的值:
var list = [{ name: 'zhangsan', isMan: true }, { name: 'xiaoli', isMan: false }, ...]
复制代码
我们看看不同的处理函数的写法,带来的复用性的差别
// Plain JS
var manList = list.filter(function(task) {
return task.isMan;
});
复制代码
复制代码使用LoDash,会简单一点:
var manList = _.filter(list, {isMan: true});
复制代码
复制代码上面两种情况,我们都会得到一个经过过滤的任务列表。
现在使用Ramda,我们可以这样做:
var filterManList = R.filter(R.where({complete: false});
复制代码
可以看出,其实ramda是在组装函数,连数据都没有,你要筛选数据的时候需要filterManList(list)
也就是说,处理数据的时候,我们不要把数据和函数耦合在一起,用一种可拆分的函数组装的方式去处理,会让复用性更强。例如下图
fn = R.pipe(f1, f2, f3);
复制代码
也就是函数和可以任意组合成新的函数fn,这个思想跟面向对象编程里,设计模式中的责任链模式非常相似,比如redux中间件组合也是这种思想。
其实用什么库不是很重要,只要能帮助你快速完成业务需求,才是最重要的,ramda只是一种选择,你认同这种编程思想。
学习ramda最大的难点
我也接触时间并不长,学习它我觉得最大的问题是官网那么多函数,让自己去筛选想要的很难第一时间找到,这就会极大的阻碍继续使用这个库的信心,所以我总结了一张思维导图表,按业务需求常见的类似增删改查这样的逻辑分了一下类,帮助想用这个库的同学快速找到对应的函数
总结这个真的非常费力,图很大,需要保存到电脑上(结合官方文档,可以查看用法示例https://ramda.cn/docs/)
总结
以上是生活随笔为你收集整理的python函数和代码复用思维导图_函数式编程库:Ramda函数思维导图,帮你快速选择要用的函数...的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 【c++思维导图与代码示例】02 函数
- 下一篇: python爬虫ip限制_爬虫访问中如何