0%

stream and lambda(5) - lambda 表达式最佳实践

lambda 表达式和函数式接口给我们的编码在一定程度上提供了便利,但我们在使用的时候也要尽量优雅的使用,达到最佳实践。

lambda 表达式结构

在第一章节,我们有提到,lambda 表达式的结构大致为:(类型)(参数1, 参数2, …) -> {方法实现}。

  1. lambda 表达式返回类型能不写则不写
  2. 参数类型尽可能不写
  3. 单参数时,不写小括号
  4. 单行表达式体,不写大括号和 return 关键字
  5. 能直接使用方法引用时,直接使用方法引用

自定义函数式接口

  1. 优先使用 JDK 自带的函数式接口,避免自定义
  2. 接口使用 @functionalinterface,可以有效避免自己脑子犯晕
  3. 不要乱用 default,尽量不用

使用函数式接口

  1. 当函数式接口当参数时,应避免接口重载,不然会导致 lambda 表达式的返回类型无法自动推导
  2. lambda 表达式体应尽量简洁

不使用 lambda 的情况

  1. lambda 表达式体逻辑太多
  2. 有大量相同的lambda 表达式体在项目中出现,可以考虑定义接口并实现
  3. 有多层嵌套 lambda,代码难以阅读

总结

好的代码,不好的代码,最终都是由人来维护,所以代码的可读性很重要。保持良好的编码习惯,遵循良好的代码实践,不单单是对其他阅读代码的人友好,对自己更好。毕竟自己写的代码,相关功能的开发及维护最终还会落到自己头上。