---------------------译自:Functional Programming in JAVA-Harnessing the Power of Java 8 Lambda Expression
我们不需要使用另一种语言来获得函数式编程的便利,只需要简单的改变我们使用JAVA的方式即可。
像C++,JAVA,C#之类的语言,最初只是支持命令式与面向对象的编程,现在这些语言也加入了函数式编程。我们简要的看一下这两种编程风格的例子并讨论一下函数式编程带来的好处。现在让我们了解一下函数式编程一些主要的概念来帮助我们更好的接受这新的编程风格。
JAVA的开发团队花了大量的时间与努力将函数式功能加入了这门语言与JDK中。为了获得这些好处,我们需要了解一些新的概念。按照下面的指南,我们可以更好的提高我们的代码质量:
- 使用声名性代码
- 提高代码的不可变性
- 避免副作用
- 更多的使用表达式而不是命令式语句
- 设计代码时使用高阶函数
让我们快速的看下这些实践。
Be Declarative
我们熟悉的命令式风格的核心就是易变的和指令式的编程。我们一直都是创建变量、对象,然后改变它们的状态。我们还会提供一些细节性的命令或执行指定,比如创建一个循环索引,增加它的值,然后检测是否到了最后一个元素,然后更新第N个元素或者数组等等。在以前因为工具本身和原因和硬件的局限性,这种编程方式对于我们来说是十分正常的。
我们刚刚看了如何进行使用声明性的方法contains()-----当我们在一个不可变的集合上使用时----比命令式风格更加的简单。所有复杂的实现和低级的细节全部封装到了方法中,我们不需要关注那些细节。当我们在做任何事时,如果这样可以使它变得更简单,那么我们最好就使用这种方式。不可变性和声明性的编程是函数式编程的精华,并且现在JAVA可以让这些十分容易做到。