请教如何简化大量 IF

本贴最后更新于 716 天前,其中的信息可能已经水流花落

在工作过程中遇到大量的 IF 嵌套业务,当时的做法是不停的抽出方法来....
但是抽方法 好烦啊,一个类里面一堆的方法,特别是起名字,太难了... 完犊子
我想了想,搞了这么一个东西,但是感觉可读性还是很差。希望各位大佬指点指点。

        //链式只要出现一次false即中断
        IFChain.newInstance()
                .chainIf(1 == 1)
                .executeTrue(() -> {

                })
                .executeFalse(()->{
                    
                })
                .chainIf(2 == 2)
                .executeTrue(() -> {

                })
                .executeFalse(()->{
                    
                })
                .chainIf(3 == 3)
                .executeTrue(() -> {

                })
                .executeFalse(()->{
                    
                })
                .chainIf(4 == 4)
                .executeTrue(() -> {

                })
                .executeFalse(()->{
                    
                })
                .chainIf(5 == 5)
                .executeTrue(() -> {

                })
                .executeFalse(()->{
                    
                })
        ;

对标写法如下

        if (1 == 1) {

            if (2 == 2) {

                if (3 == 3) {

                    if (4 == 4) {

                        if (5 == 5) {

                        }
                    }

                }

            }
        }
打赏 20 积分后可见
20 积分 • 6 打赏
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    2991 引用 • 8145 回帖 • 590 关注

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • Blackman99
    捐赠者 订阅者

    Javascript

    [
    	[1 === 1, () => { 
    		
    	}],
    	[2 === 2, () => {
    			
    	}]
    ].reduce((lastCondition, [condition, action]) => {
    	let boolVal = lastCondition && condition
    	if (boolVal ){
    		action()
    	}
    	return boolVal 
    }, true)
    

    2 操作
    Blackman99 在 2019-12-24 09:19:55 更新了该回帖
    Blackman99 在 2019-12-24 09:19:17 更新了该回帖
  • 其他回帖
  • poc9999
    捐赠者

    不满足条件的可以提前 return

  • Angonger 2 评论
    支持者

    嵌套 IF 一般考虑的是提前结束来减少嵌套层数

    但是 如果当你的 return 必须要写两行代码呢
    pencilso
    @pencilso 最好给我场景,不是几行代码的问题,我有说提前结束这种是解决什么问题的
    Angonger
  • Adrift001 1 评论

    嗯,确实有点不符. 🙂

    感谢老铁的打赏
    pencilso
  • 查看全部回帖