函数式编程实践
Posted shape of code
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数式编程实践相关的知识,希望对你有一定的参考价值。
翻不过这座山,他们就听不到我们的故事。
—— 恭喜IG夺冠
在JavaScript中的函数式编程
了解了函数式编程的基本概念后,现在让我们来用函数式编程来实现一个小的功能。
在用javascript进行函数式编程时,有三个简单的规则需要注意,这能够让我们更容易实现函数式编程:
1. 保持数据的不可变性
2. 确保尽量使用纯函数,只接收一个参数,返回数据或其他函数
3. 尽量使用递归处理循环
下面我们要实现的功能是一个时间显示器,获取当前的时间,然后以 09:25:30 AM 的形式输出。
为了加深印象,先用我们熟悉的命令式风格来简单地实现一遍这个功能,再用函数式风格来实现一遍。这样能够让我们更好地理解这两种风格的区别和各自的优缺点。
命令式风格编写的显示时钟
首先,我们需要获取当前时间,并且将时间格式化
再将时间显示到控制台
最后,每隔一秒执行一次显示的函数
命令式风格的代码完成功能很简单,但是每个函数大而复杂,做的事情太多。如果没有注释,很难让人理解,而且也不好维护。下面让我们来看看函数式风格的实现。
函数式风格编写的显示时钟
函数式风格编程,我们的目标是将该应用的业务逻辑分解成更小的部分或函数。每个部分将聚焦于单个任务,然后我们将它们合成更大的函数,以便我们可以创建一个时钟程序。
定义基础的函数
用于合成其他函数的函数
格式化时间的功能函数
下面将之前定义的功能函数进行合成
最后,调用这个函数
最终的输出和命令式版本是一样的,但是这种方法有诸多的好处。首先,所有函数易于测试和复用。它们还可以在将来的时钟程序或者其他其它数字显示程序中复用,而且这个程序非常容易进行功能扩展。它没有副作用,函数外部不存在全局变量。
如果专门从代码行数来看这两种编程风格的代码,函数式风格确实要复杂一些,但是在后期可维护性和可扩展性上,函数式风格则要便利许多。想以后加班越来越少,在时间允许的情况下,还是多用函数式风格来组织你的代码吧 : )
以上是关于函数式编程实践的主要内容,如果未能解决你的问题,请参考以下文章
函数式编程的Java编码实践:利用惰性写出高性能且抽象的代码