自我总结的一些java编码习惯(不断更新)

本文记录一下我最近一段时间遇到过的一些代码优化或者代码规范写法,想起来就不断更新和记录。

因一些代码是公司代码,为了合理放出来,有一些命名或者格式是自我更改,减少公司代码出现在互联网,可能出现一些命令规范不太好的,比如没有按驼峰命名方式等一些基础错误,有时间逐一更改。

 

1.使用java8后,优化一些代码写法

 例1:关于list里删除元素,根据阿里规范手册要求,基本使用迭代来处理

    Iterator<SpVo> it = list.iterator();

    while (it.hasNext()) {
                 SpVo spVo = it.next();
                 if (ObjectUtil.isEmpty(spVo.getBh())) {
                     it.remove();
                 }
           }

使用java8语法后:

            spList.removeIf(spVo -> ObjectUtil.isEmpty(spVo.getBh()));

 

例2:排序简化

          Set<Jf> set = new TreeSet<>(new Comparator<Jf>() {
               @Override
               public int compare(Jf o1, Jf o2) {
                   //字符串,则按照asic码升序排列
                   return o1.getBh().compareTo(o2.getBh());
               }
          });

       使用java8语法后:

         改为升序:Set<Jf> set = new TreeSet<>(Comparator.comparing(Jf::getBh));
         改为降序:Set<Jf> set = new TreeSet<>((o1, o2) -> o2.getBh().compareTo(o1.getBh()));

例3:减少多余的判断,尤其适用java8新语法带来的

         for (MetaVO entity : list) {            
            List<MetaVO> entities = nestedMaps.get(entity.getPid());
            if (entities == null) {
                entities = new ArrayList<>();
            }
            entities.add(entity);
            nestedMaps.put(entity.getPid(), entities);           
        }

        使用java8语法后:

         for (MetaVO entity : list) {            
            List<MetaVO> entities = nestedMaps.computeIfAbsent(entity.getPid(),k->new ArrayList<>());
            entities.add(entity);
        }

2.一些好习惯

2.1 参数过多的话,每个公司要求不同,个人觉得超过三个以上,就可以用bean来封装

2.2 在一个方法里,返回值如果没有过多的处理,可以直接返回,而不需要再建立什么容器(这里容器主要指的例如集合、对象等内容)来返回,在ServiceImpl层常见

          public String getId(String name){

               String str = userMapper.getId(name);

               return str;

          }

         应该写为

          public String getId(String name){

                return userMapper.getId(name);

          }

2.3 对布尔判断,如果简单的话,尽可能使用三目运算,看起来简单也写起来方便。

2.4 对集合里的某个值需要每次拿出来判断,还不如直接去定义一个变量获取好,然后拿这个变量去判断,减少内存消耗。

2.5 map进行遍历,使用keySet进行遍历获取keys,使用entrySet,遍历一次将key和value放置在entry中,没必要keySet进行遍历获取keys,然后通过map.get(key)获取value。相当于进行遍历了两次

 

3.其他内容

例1:减少if-else,这个网上很多优化,可以自行百度,我个人常用就是枚举类或者因环境而优化

for (PzVO pVO:pzVOList) {
             if(A.equals(pzVO.getKey())){
                    sDo.setA(pzVO.getValue());
             }
             if(B.equals(pzVO.getKey())){
                    sDo.setB(pzVO.getValue());
             }
             if(C.equals(pzVO.getKey())){
                    sDo.setC(pzVO.getValue());
             }
             if(D.equals(pzVO.getKey())) {
                   sDo.setD(pzVO.getValue());
             }
         } 

        优化1:用if-else,这样减少没必要的判断,每次if都要去判断一次

        优化2:
              Map<String,String> pzMap = pzVOList.stream().collect(
                     Collectors.toMap(PzVO::getKey,PzVO::getValue));
                     sDo.setA(pzMap.get(A));
                     sDo.setB(pzMap.get(B));
                     sDo.setC(pzMap.get(C));
                     sDo.setD(pzMap.get(D));

        

例2:没必要每次去创建

          List<SyVo> list = new ArrayList<>();
          if (){
              list = ...
          }else{
              list = ...
          }

     改进:
          List<SyVo> list ;
          if (){
               list = ...
          }else{
               list = ...
          }

 

例3:一些多余的写法

        private String setIdea(String note) {
            if (StringUtils.isEmpty(note)) {
                 return "";
            }
            if (Common.YES.getCode().equals(note)) {
                return "通过";
            } else if (Common.NO.getCode().equals(note)) {
                return "驳回";
           }
           return "";
         }
    改进:
        private String setIdea(String note) {
            String flag = "";
            if (Common.YES.getCode().equals(note)) {
                flag = "通过";
            } else if (Common.NO.getCode().equals(note)) {
                flag = "驳回";
            }
            return flag;
        }

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值