java中繁杂的if/else怎么重构

if条件判断是程序中最基本也最常用的判断,但是如果设计的不好,会在代码中发现嵌套很多层的if/else,写的人可能觉得没什么,但看的和维护的时候,把人拉去祭天的心都有。

本文就写一下重构多层嵌套if的方法。

首先我们要有一个原则:一个方法中的if嵌套不要超过3层,否则不易于阅读和维护。

好,原则有了,那我们就要尽量往原则上靠。

方法1 提前return

如下面这个例子

可以直接改成这样

方法2 策略模式

一个例子

策略模式有多种实现方式:

方式2.1 多态

初始化时,把各种策略对象放到Map中

方式2.2 枚举

再直接调用

方法3 Optional

这是JDK8的新特性,用于非空判断。

如下面这个例子

可以直接改成这样

方法4 表驱动法

如果对数据库知识有了解的话,会知道从表里查一条数据非常便捷。那在java代码中有没有类似表的结构呢,数组和Map就可以看做一种简单的表。如下例:

改成:

 


发表评论

电子邮件地址不会被公开。 必填项已用*标注