Java中如何更优雅地编写多判空分支的条件代码
Java 条件逻辑优化方案
你给出的两段判断逻辑本质是:当a、b的空值状态一致(同时为空/同时非空)时抛出ArithmeticException,可以通过合并条件大幅简化写法。
最优简化写法
直接通过相等判断匹配目标场景,仅保留单分支逻辑:
// 注意原代码中异常类名拼写错误,正确为ArithmeticException if ((a == null) == (b == null)) { throw new ArithmeticException("some message"); }
写法说明
(a == null) == (b == null)会在二者空状态完全一致时返回true,完全覆盖你原有的两个if分支的判断范围- 没有额外性能开销,和原有两段判断的执行效率完全一致
- 消除了重复的异常抛出代码,后续修改提示信息只需要改一处,维护性更高
需区分异常场景的扩展写法
如果后续需要为「同时为空」「同时非空」两种场景设置不同的异常提示,可以采用嵌套分支的写法,可读性更强:
if (a == null) { if (b == null) { throw new ArithmeticException("a、b均不能同时为空"); } } else { if (b != null) { throw new ArithmeticException("a、b不能同时非空"); } } // 此处为a、b一空一非空的合法业务逻辑
内容的提问来源于stack exchange,提问作者MonishGhutke
相关产品推荐
相关产品推荐

