zoukankan      html  css  js  c++  java
  • 《放弃繁琐的if-else》开启Assert断言的新时代

    一、场景再现

      我们平时在service操作数据库,难免会出现这种情况:

      if(null == result){

      }else{

      }

      这样的代码会吞噬掉你有限的代码空间,虽然通俗易懂,但一旦爆炸式的袭来,将会是一场阅读灾难。

    终于,在java8到来之际,带来了福音,利用option解决了NullPoint问题,不用在代码里面判空拦截(不懂的,尽快问度娘,此处不赘述)

    此篇文章,我们主要介绍Assert断言带来的丝滑体验。

      注:Assert抛出的异常,刚好可以被全局异常拦截(https://www.cnblogs.com/weipt0106/p/13269277.html)

    二、断言具体的实现

    2.1、写一个AssertUtils

      当然也可以参看Hutools提供的Assert,但我们自己写,可以抛出我们自己定义的异常,方便全局异常处理。

    public abstract class AssertUtils {
    
        /**
         * 如果入参collection集合为空,则抛出201异常
         * @param collection
         * @throws BizException
         */
        public static void notEmpty(@Nullable Collection collection,SCodeEnum codeEum) throws BizException {
            if (ObjectUtils.isEmpty(collection)) {
                throw new BizException(codeEum);
            }
        }
    
        /**
         * 如果入参对象为null,抛出异常
         * @param object
         * @throws BizException
         */
        public static <T> T notNull(T object,SCodeEnum codeEum) throws BizException {
            if (object == null) {
                throw new BizException(codeEum);
            }
            return object;
        }
    
        /**
         * 如果入参text为空,则抛出异常
         * @param text
         * @throws BizException
         */
        public static void hasText(@Nullable String text,SCodeEnum codeEum) throws BizException {
            if (!StringUtils.hasText(text)) {
                throw new BizException(codeEum);
            }
        }
    
        /**
         * 断言是否为真,如果为 {@code false} 抛出 {@code BizException} 异常<br>
         * @param expression 布尔值
         * @param codeEum 错误码
         * @throws BizException if expression is {@code false}
         */
        public static void isTrue(boolean expression, SCodeEnum codeEum) throws BizException {
            if (false == expression) {
                throw new BizException(codeEum);
            }
        }
    
        /**
         * 断言是否为假,如果为 {@code true} 抛出 {@code BizException} 异常<br>
         * @param expression 布尔值
         * @param codeEum 错误码
         * @throws BizException if expression is {@code false}
         */
        public static void isFalse(boolean expression, SCodeEnum codeEum) throws BizException {
            if (expression) {
                throw new BizException(codeEum);
            }
        }
    }

    2.2、代码中的使用

      替代if-else的最佳体验

    //判断批量操作是否成功
    List<SiteProject> siteProjects = BeanUtils.convertToResponse(SiteProject.class, createReqs);
    boolean flag = this.saveBatch(siteProjects);
    AssertUtils.isTrue(flag, SCodeEnum.INSERT_ERROR);
    
    //传入条件,返回true,false这种方式是万能的
    int updateNum = siteProjectMapper.updateById(updateReq);
    AssertUtils.isTrue(updateNum>0, SCodeEnum.UPDATE_ERROR);//判断对象不为空
    ResponseBean responseBean = commonOperateFlowable.startProcess(wfProcessExecBean);
    AssertUtils.notNull(responseBean, SCodeEnum.INSERT_ERROR);
  • 相关阅读:
    Javascript高级编程学习笔记(66)—— 事件(10)变动事件
    Javascript高级编程学习笔记(65)—— 事件(9)复合事件
    Javascript高级编程学习笔记(64)—— 事件(8)键盘与文本事件
    Javascript高级编程学习笔记(63)—— 事件(7)鼠标及滚轮事件
    Javascript高级编程学习笔记(62)—— 事件(6)焦点事件
    Javascript高级编程学习笔记(61)—— 事件(5)UI事件
    Javascript高级编程学习笔记(60)—— 事件(4)事件类型
    Javascript高级编程学习笔记(59)—— 事件(3)事件对象
    Javascript高级编程学习笔记(58)—— 事件(2)事件处理程序
    Javascript高级编程学习笔记(57)—— 事件(1)事件流
  • 原文地址:https://www.cnblogs.com/weipt0106/p/13269667.html
Copyright © 2011-2022 走看看