美文网首页
Java8 Functional 替换 if-else 代码块

Java8 Functional 替换 if-else 代码块

作者: Fenix_Liu | 来源:发表于2022-05-17 00:06 被阅读0次

冗长的 if-else 块是开发人员的噩梦,很难维护,并且有很多副作用。sonar将这些代码块标记为“Cognitive complexities”。
Java8提供了函数接口,可以与Predicate配合,很好的替换传统的 if-else 代码块。
例如,如下代码块


image.png

我们可以借助predicates和functions将上面的 if-else 代码块转换为规则矩阵。if-else可以转换为predicate并且相应的执行规则可以转换为function。然后我们把predicate和相应的function存储到Map中,从而生成规则矩阵。


image.png
上面类中定义的 getRule 方法将接收一个对象 Cart,并通过filter过滤rulemap中的predicate 返回要应用于它的相应函数。
Function和Predicate可以定义为单独类中的常量,这将有助于扩展规则。
image.png
image.png

使用这个规则矩阵非常简单ー取出规则(即相应的函数)并应用到购物车上。就可以向复杂的代码块say byebye!

RuleMatrix.getRule(cart6).apply(cart6)
image.png

相关文章

  • Java8 Functional 替换 if-else 代码块

    冗长的 if-else 块是开发人员的噩梦,很难维护,并且有很多副作用。sonar将这些代码块标记为“Cognit...

  • 第二章⑥分支语句if语句

    if-else语句有三种格式 1.if(true){执行代码块;} 2.if(条件表达式){执行代码块}elses...

  • java8函数式编程

    收藏几个介绍java8的文章: Functional Programming in Java: Streams F...

  • if选择结构

    if选择结构 if选择结构的语法是:if(判断条件){满足条件之后,执行的代码块} if-else选择结构,if(...

  • Fortran学习笔记3

    流程控制语句 if的基本用法 以上then代码块中如果只有一行程序代码,可以改写成下面的形式: if-else语句...

  • Java8 Stream 入门

    系统的整理一下 java8 Streams 的使用。 思想 是函数式编程(functional programmi...

  • 循环及嵌套

    一 if语句 if-else条件语句:条件语句结果为True执行的代码块执行过程:先判断条件语句是否为True, ...

  • java8 – Functional Interfaces

    什么是Functional interfaces Functional interfaces 也被称作Single...

  • Effective Java(3rd)-Chapter7 Lam

      在Java8中,functional 接口,lambda,和方法引用被加入,使得创建方法对象更容易。strea...

  • Python 条件语句

    1 if语句 2 if-else 执行过程:先判断条件语句是否为True,如果为True就执行代码块1,执行完代...

网友评论

      本文标题:Java8 Functional 替换 if-else 代码块

      本文链接:https://www.haomeiwen.com/subject/ydanurtx.html