Dear ,,,,,,,, 2022-05-20 15:40 采纳率: 100%
浏览 140
已结题

if 判断太多,有什么好办法优化吗?

问题遇到的现象和发生背景

不能直接抛出异常或者提前return的
不能直接抛出异常或者提前return的
不能直接抛出异常或者提前return的
这个是大致的流程

img

需要三重判断,大概逻辑是判断字符串是否为空,不为空,执行查询语句,结果再判断是否为空,不为空添加进对象内,并且修改标志为false

问题相关代码,请勿粘贴截图
public static void main(String[] args) {
        boolean flag = true;
        //根据主键查数据
        String byId = "111";
        //s是byId的一个字段,不只是根据s查数据,还有x,y,z等也是需要查的
        String s = "";
        //list 是根据字段查出的数据
        List<String> list = new ArrayList<>();
        if (StringUtils.isNotEmpty(byId)) {
            if (StringUtils.isNotEmpty(s)) {
                System.out.println("查询语句,得到集合");
                if (CollectionUtil.isNotEmpty(list)) {
                    //不只是需要这个标志物,也需要list等,所以不能直接return什么的
                    flag = false;
                }
            }
            
        }
        //这只是一个大概的逻辑
        System.out.println(flag);
    }

运行结果及报错内容

已经顺利达到想要的结果

我的解答思路和尝试过的方法
我想要达到的结果

有其他思路,少用if判断吗,这个接口返回的数据较多,我的判断有点多,其中有一个if 包含 16个if 这16个if每个里面还有一个,有什么办法看起来美观一点吗

  • 写回答

8条回答 默认 最新

  • 皮蛋不吃粥 2022-05-20 16:01
    关注

    给个思路:
    可以对数据异常点(字符串为空,集合为空,某字段不存在等)进行捕获,有异常直接抛出自定义异常再全局捕获进行处理

    异常也可以用断言直接抛

    Assert.notEmpty(new ArrayList<>(), "集合不能为空");
    

    大致思路

         public static void main(String[] args) {
            boolean flag = true;
            //根据主键查数据
            String byId = "111";
            //s是byId的一个字段,不只是根据s查数据,还有x,y,z等也是需要查的
            String s = "";
            //list 是根据字段查出的数据
            List<String> list = new ArrayList<>();
            if (StrUtil.isEmpty(byId)){
                // TODO: 2022/5/20 抛异常 
                System.out.println(flag);
                return;
            }
            if (StrUtil.isEmpty(s)){
                System.out.println(flag);
                return;
            }
            System.out.println("查询语句,得到集合");
            if (CollectionUtil.isEmpty(list)){
                System.out.println(flag);
                return;
            }
            flag =false;
            System.out.println(flag);
    
          }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

问题事件

  • 系统已结题 5月31日
  • 已采纳回答 5月23日
  • 修改了问题 5月20日
  • 修改了问题 5月20日
  • 展开全部

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献