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 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目