乐趣区

关于code:教你如何优雅的改写ifelse

摘要:这些场景,你是怎么写的代码?

if-else,这是个再失常不过的 coding 习惯,当咱们代码量小的时候用来做条件判断是再简略不过的了。但对于优良程序员来说,这却不是好代码。

不信你往下看…

1. 卫语句提前 return

假如有如下代码

通过对判断条件取反,代码在逻辑表白上会更加清晰

2. 应用 Optional 简化 if 判空

2.1 简化 1 级判空

假如有如下代码

应用 Optional 后

2.2 简化多级判空

假如有如下代码

应用 Optional 后

对于没有 else 的场景,应用 ifPresent 即可

3. 策略模式

假如有如下代码:

这就是不要依据不同的参数类型走不同的代码逻辑,这种场景很常见,他还会以 switch-case 的形式呈现:

不同的代码逻辑就代表了不同的策略,咱们能够通过如下几个形式改写。

3.1 多态

具体的策略对象能够放在一个 Map 中,优化后的实现相似如下

对于如何寄存到 Map 中也两个能够参考的形式。

3.1.1 动态表

3.1.2 Spring 托管下的动静注册

定义一个注册核心用于承受注册信息

将每个 Strategy 交由 Spring 治理,并在结构后注册

应用形式就变成了

3.2 枚举

采纳多态会额定产生很多策略类,如果咱们曾经事后将 petType 定义成了枚举,就会发现能够把 Strategy 中的 invoke() 办法放到枚举中,从而实现了一种映射关系。

这样在调用时的代码就相似如下:

3.3 函数式简化策略

同样面对多态会额定产生很多策略类的问题,除了枚举咱们还能够应用函数式的形式来改写,这里有个前提最好是策略的内容不会过于简单,不然在代码的可读性上会比拟差

同样咱们会有一个 map 动态表,不过 map 外面寄存的是 lambda

应用形式则变成了

本文分享自华为云社区《改写 if-else 的几个思路》,原文作者:技术火炬手。

点击关注,第一工夫理解华为云陈腐技术~

退出移动版