IDEA-Stram调试
前言
JAVA8的lambda的stream编程,给我们带来了很流畅(牛逼)的编程体验,但带来的问题也很明显:
下面粘贴一张博猪一个日常的代码片段:
上面代码看着很简洁(zhaungbi),但是带来的问题也很直接:
- 方法可读性不好
- 调试困难,无法知道流程周转
下面博猪给大家介绍一个博猪日常写stream时常用的一个神器:==Stream-Trance==,一个IDEA自带的调试神器,这个工具可以详细看到每一步操作的关系、结果,非常方便进行调试。
Stream调试
下面通过一个Demo,让博猪给你演示一下神器是如何使用的。首先给大家贴一下没有注释的代码(很装逼的代码)。
1 |
|
下面博猪贴一下有注释的代码,顺便理一下这一块的代码的流程:
1 |
|
上面这段代码算是流程比较长的了,当然实际工作中可能遇到比这个还要复杂的,那博猪演示一下日常是怎么调试Stream流程的。
- 在Stream那行打上断点。点击debug运行。
- 点击下方按钮
然后自动进入当前
Stream
跟踪调试窗口,默认Split 模式显示,上面会展示每个链式调用的选项卡,点击各个选项卡可以看对应每步的跟踪结果。如下面所示:- 初始流
- 过滤
- 排序
- 转map
- 去重
- 结果
还可以点击
Flat Mode
,查看完整的流程的运转
链式调试
上方详细介绍了一下Stream的调试,但是平时也是使用一些Lambda的链式编程,那上述方法是否支持呢?
比如下方代码:
1 |
|
OK,我们按照上方进行调试,调试图如下方所示:
可惜, Trace Current Stream Chain
按钮是灰色状态,不能进入,因为那个按钮只能被 Stream
调试所用。
那像这种非 Stream 链式调用怎么调试呢?
断点进入后,可以选中需要调试的部分链式代码片断,然后右键选中 Evaluate Expression
菜单(ALT + F8)进入表达式计算窗口,点击 Evaluate
按钮开始计算:
计算无误,该表达式还可以自由编辑,非常强大。虽然没有像 Stream
这样专属的调试面板,使用 Evaluate Expression
也能达到调试链式调用的目的