Java 声明式编程(上)重构代码

今天正好是我第 100 次分享,感谢各位朋友的支持!我会一直努力走下去,带来更新更好的内容。

近一两年函数式编程变得很火,火了之后,就变得什么都好,其实相对于面向对象编程他的确具有一些优点,例如可测试和维护。但并不表示他什么都好,这个世界不是非黑即白的,很多事是无法衡量对与错。是灰度。所以对于那些适合函数编程的场景我们可以重构代码,将命令式或面向对象更改为函数式编程。例如函数式编程更为抽象,需要我们思维缜密,设计精巧。而命令式或面向对象地编程就更易于理解和设计。

命令式编程:命令“机器”如何去做事情(how),这样不管你想要的是什么(what),它都会按照你的命令实现。

声明式编程:告诉“机器”你想要的是什么(what),让机器想出如何去做(how)。

Java 8 非常精彩,有许多可以拍手称赞的新的特性,以后给家介绍。

重构代码是一种好的习惯,可以让你在精益求精中提高你的代码质量。

下面通过具体例子说明一下。示例中我们将命令式编程的代码重构为声明式编程

一个遍历找出质数的小程序,起始这个在我们的代码中比比皆是。

我们找出一定范围数字内的质数,这样表达意思很清晰,在从 1 到 7 (range),是否为质数,传入一个函数作为 noneMatch 参数来判断是否为质数。这里还去掉中间变量 divisable 节省了内存开销,而且语义清晰。

第二示例,是我们读取一个文本文件,然后找出文件中 test 单词出现次数

这里有许多没有必要的校验代码例如

(line = bufferedReader.readLine()) != null)

以及一些中间变量例如line

修改简单明了,这就是函数式编程的强大之处,简简单单几行代码就能达到同样的效果。

最后一个示例是分类,根据员工的等级进行分类

修改为声明式编程风格的代码

也可以这样写

今天就到这里,感谢大家支持!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180426G1UQ7M00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券