现在的位置: 首页 > 综合 > 正文

近期对提高java代码质量的一些经验总结

2018年04月22日 ⁄ 综合 ⁄ 共 1495字 ⁄ 字号 评论关闭

在开发中JDK的API往往不够我们使用,一些常用的功能都没有直接的api可操作,很多操作也不太安全容易报异常。下面总结一下自己在项目中主要用的一些第三方JAR的一些常用类。主要来自commons项目和guava。

      一  字符串和集合的普通操作

          1commons-lang包StringUtils 。   

                 StringUtils.isBlank  判断为null或者空串

          2commons-collection包 CollectionUtils。

                CollectionUtils.isEmpty 判断为null或者空集合

         3 commons-beanUtil包ConvertUtils,MapUtils,BeanUtils
              ConvertUtils.convert 类型转换。 Interger.parseInt 等相关字符串转换类型的代码。很容易出类型转换异常,采用这个方法一是简约了代码,传入一个字符串和一个想转为的类型就可以,并且如果有类型转换不匹配比如“22.22”转int,则会返回0。

           MapUtils.getXX等系列方法,  如果我们从一个map里面取出一个字符串并转化为对于的类型,并且在null的时候还需要一个默认值。那么需要有三目运算并且可能还有类型转换异常。用MapUtils中各种类型的get方法可以避免。这个和ConvertUtils.convert中出现类型不同为0值不同的是,这个是取整了,看了源码是调用的Number中的方法,这点比ConvertUtils.convert用着舒服点。ConvertUtils.convert 调用之后返回的Object还要强转这点很不舒服。所以能用MapUtils就尽量用MapUtils。

             具体用法不多一一列举了,总体来说,我们用jdk的api都需要首先判读是否为null再判执行某一个方法,这样重复了很多代码,这些在commons 对于的  jar包中都有相关增强方法,首先判断了是否为null。这么大大精简了我们的代码并且减少null指针出现的几率。

        BeanUtils.populate map转对象
BeanUtils.describe对象转map 

              这在很多前台通过map传值的框架中很有用,比如以前公司所有的ext+dwr

     二   集合创建和复杂的集合操作

       1  collection的新建,用guava中的Lists.newXXX ,Maps.newXXX等方法。 比如 List<List<Map<String,Object> list = Lists.newArrayList();这是<effective java>中推荐的方法,之前貌似说java7将支持貌似不行还是,所以就用guava中的方法吧,抛弃new XXList<XXX>这种方式吧。

       2  集合的操作.

             由于现在java还不支持闭包,我们还要比较多写这样的代码,写for循环出一个list中的元素然后对其进行操作。如果我们另一个地方有功能类似的代码,我们只能复制粘贴。commons-collection ,guava都提供了闭包的实现。也比较够用,但是我觉得op4j更加适合自己的口味,链式编程,疯狂连点。一个功能封装成一个function用于复用。op4j本身也提供了很多内置的实现。 类型转换,基本的求和平均等操作。

           用op4j可以写过的对于集合的操作都积累起来复用,比如求环比啊,求某个字段占总数的比值等等。提高了复用和可维护性。

     

抱歉!评论已关闭.