发表于: 2017-12-24 21:08:55

0 457


一.今天完成的主要事情

1.对代码进行初步重构

 /**

     * 根据入参size计算实际获取数据的个数

     */

    public static int calculateActualSize(Integer size) {

        Integer result = size;

        if (result == null || result <= 0) {

            result = 10;

        }

        return result;

    }

第一个方法是获取页长的方法,因为每个查询列表接口基本都有page和size参数,所以感觉这部分内容可以抽取出来提炼成一个方法,又因为获取取数据的start参数需要size参数,所以这里设计成了两个方法,一个方法获取size,另一个方法获取start参数,获取size参数的方法如上,而获取start参数的方法代码如下:

    /**

     * 计算根据传入的page和实际的size计算分页的起始页

     */

    public static int getParameterStart(Integer page, Integer size) {

        if (page == null || page <= 0) {

            page = 1;

        }

        int start = (page - 1) * calculateActualSize(size);

        if (start < 0) {

            start = 0;

        }

        return start;

    }


第二个重构的部分是校验参数是否为空的方法,因为有很多入参需要校验是否为空,如果一个一个的写,非常麻烦而且代码量很大,所以设计一个可变长度的参数列表,将需要校验是否为空的参数一次性传入,然后如果有参数为空则返回该参数在传入时的顺序,如果没有参数为空,则返回-1.

    /**

     * 判断传入的参数是否为空

     */

    public static int isNullOrEmpty(Object... params) {

        for (int i = 0; i < params.length; i++) {

            if (DataUtils.isNullOrEmpty(params[i])) {

                return i;

            }

        }

        return -1;

    }

这样在接口中如果需要校验多个参数是否为空就可以这样写

String[] paramNames = new String[] {"schoolId", "withdrawAmount", "schoolName", "idArray"};
int result = ParamsUtil.isNullOrEmpty(schoolId, withdrawAmount, schoolName, idArray);
if (result>= 0){
log.info("Parameter " + paramNames[result] + " can not be null");
model.addAttribute("code", -1000);
return "/common/failure";
}

原本需要多行的代码被简化成了这么几行

第三个是一个功能方法,这个方法是将数组转换成字符串,方便后续打印输出,主要是当传入的参数是一个数组时,直接调用数组的toSting()方法打印的是该数组对象的地址,起不到打印参数的作用,所以写一个转换方法,将传入的数组转换为字符串打印,目前仅提供了Long类型,后续可能优化成泛型方法,支持所有类型的数组参数.

    /**

     *  将数组转换为字符串

     * */

    public static String convertArrayToString(Long[] array) {

        StringBuilder stringBuilder = new StringBuilder();

        if (DataUtils.isNullOrEmpty(array))

            return null;

        stringBuilder.append("[");

        for (int i = 0; i < array.length; i++) {

            stringBuilder.append(array[i] + "");

            if (i != array.length - 1) {

                stringBuilder.append(", ");

            }

        }

        stringBuilder.append("]");

        return stringBuilder.toString();

    }

   

二.明天计划完成的事情

1.继续重构代码,直到以自己的水平已经不能重构为止


三.遇到的问题

暂无


四.收获

以上


五.项目进度情况

暂无延期风险,项目进度正常



返回列表 返回列表
评论

    分享到