写点什么

通过新版 JDK 获取更强的代码的表现力

用户头像
sdutyq
关注
发布于: 2021 年 03 月 18 日

代码的表现力,是指在不影响阅读的前提下,代码越短越好。


先对比先两段代码,你觉得哪个更好?

List<Integer> list = new ArrayList<Integer>();list.add(1);list.add(5);list.add(3);VSvar list = List.of(1, 5, 3);
复制代码

可以明显感觉到,下面一种写法不仅代码量更少,也更容易阅读。我们应该选择不影响阅读体验的条件下,尽可能短的代码。随着 java 新语法的推进,语言的表现力也在增强,下面列举一些表现力更强的写法:

弱类型定义

var 的语法,局部变量不用类型也是表达的增强,根据上下文可以很方便的阅读类型。


lamda

List<String> list = map.get("key");if (list == null) {    list = new ArrayList<>();}VSList<String> list = map.computeIfAbsent("key", key -> new ArrayList<>());
复制代码

lamda 可以方便的把处理过程作为参数传递,可以很方便的实现「模板方法」设计模式。重用函数的执行骨架,协调调度传入的 lamda 过程。


流-lamda 增强集合

jdk8 开始支持的流其实是结合 lamda 做的一些语法糖。对集合常见操作比如遍历,map 和 reduce 运算,提供了 lamda 支持。对集合的操作以前你关心怎么做,现在只需要关心做什么。

List<String> names = new ArrayList<>();for (User user : users) {    names.add(user.getName());}VSList<String> names = users.stream().map(user -> user.name).collect(Collectors.toList());
复制代码


链式写法

链式写法省略了重复的主语,表达力更强。

var article = new Article(1L, "testUser");article.setTitle("title");article.setContent("content");article.setOrderNum(100);VSvar article = new Article(1L, "testUser").setTitle("title").setContent("content").setOrderNum(100);
复制代码


发布于: 2021 年 03 月 18 日阅读数: 8
用户头像

sdutyq

关注

还未添加个人签名 2019.10.15 加入

还未添加个人简介

评论

发布
暂无评论
通过新版JDK获取更强的代码的表现力