Lambda Optional代替if-else
前言
函数式的编程可以极大的简化逻辑代码的编写,虽然是一种语法糖,但是好用就是好用。
Optional 这个功能可以用来防止null值给程序带来的异常,提供的API也可以用来简化逻辑代码的编码,简化if-else的编写。
写法比较
常规代码写法
一般写一个业务逻辑时,业务代码需要加很多判断,保证程序的健状性。
1 | public void test() { |
改进后
可以看到,改进后的写法,判空这种操作,直接交给Optional去操作。
解释下面的意思:
- Optional.ofNullable(user),接收 user 这个数据,可以允许为null
- null值是不会被 map 操作的,直接忽略
- orElse,如果 user == null,才会进这个逻辑。
整个流程就等价于改进前
的逻辑。
1 | public void test() { |
简单的if-else
调整测试数test
就可以看到不同的效果。
记住这个固定的if-else
套路。
1 | public static void test1() { |
这个示例多加了一个filter
,相当于在if()的中插号里写复杂判断逻辑。
1 | public static void test2() { |
等价if-else
写法:
1 | public static void test2() { |
isPresent() 使用
isPresent 返回boolean,直觉上应该用if-else来判断一下。但是回头想想,如果需要用if-else来判断,直接用if-else来写不完了,干嘛还使用Optional包一层,多此一举。
反面示例
1 | public String getName(User user){ |
正面示例
1 | public String getName(User user){ |
总结
在写复杂逻辑时,尽量简化代码,不要让代码太代阅读起来费劲,lambda表达式并不复杂,直正复杂不好读的是正则表达式,这种习惯了之后,写起来效率高,看起来也舒服。
即使不使用lambda表达式,在写代码时也要尽量规避返回null
出去。防止代码由于null
引发异常。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 人话翻译机!
评论