优雅永不过时

100 阅读1分钟

无论是日常编码,还是业务涉及,能够优雅的表达思想,提高代码简洁度,阅读性都是一种能力,总结一下优雅的做法

优雅的关闭流 java7 try with resource,针对实现了AutoCloseable接口的类,都可优雅的关闭流,从而舍弃finally关闭

try catch finally

BufferedReader in = null;
try {
			....
		} catch (Exception e) {
			
			e.printStackTrace();
		}finally {
			try {
				if (in != null) {
					in.close();
				}
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}
try winth resource
try (final BufferedReader in = new BufferedReader(new InputStreamReader((new URL(url + "?" + param)).openConnection().getInputStream()));PrintWriter out =new PrintWriter(response.getWriter())){

	...	
	}catch{


	}

Netty 优雅的关闭流程 1 shutdownGracefully() Lambda表达式 list求交集

1 List collect = list1.stream().filter(list2::contains).collect(Collectors.toList()); 设计模式代替if else,策略模式,模板模式 代码整洁度,例如多注入service,按着高矮胖瘦排列,视觉舒适,controller求求你别写业务代码了

public  List getRandomList(List<?> paramList,int count){
        if(count==0){
            return null;
        }
        Random random=new Random();
        List<Integer> tempList=new ArrayList<>();//临时存放产生的list索引,去除重复的索引
        List newList=new ArrayList();//生成新的list集合
        int temp=0;
        if(count<=1){//如果数据小于1,取一条数据
            temp = random.nextInt(paramList.size());
            newList.add(paramList.get(temp));
        }else {
            for(int i=0;i<Math.ceil(count);i++){
                temp=random.nextInt(paramList.size());//初始化一个随机数,将产生的随机数作为被抽list的索引
                if(!tempList.contains(temp)){//判断随机抽取的随机数
                    tempList.add(temp);
                    newList.add(paramList.get(temp));
                }
                else{
                    i--;
                }
            }
        }
        return newList;
    }

优雅判空 个人喜欢Assert判空,至于java8的Optional并没体会到优雅之处,日常StringUtils,Collections,isNoBlank等,

public String testOptional(Test test) {
        return Optional.ofNullable(test).flatMap(Test::getTest3)
                .flatMap(Test3::getTest2)
                .map(Test2::getInfo)
                .orElse("");
    }
看起来挺优雅,但日常没体会到
还有日常常用的instanceof
else if (f instanceof TreeBin) {
        validated = true;
        TreeBin<K,V> t = (TreeBin<K,V>)f;
        TreeNode<K,V> r, p;
        if ((r = t.root) != null &&
            (p = r.findTreeNode(hash, key, null)) != null) {
            V pv = p.val;
            if (cv == null || cv == pv ||
                (pv != null && cv.equals(pv))) {
                oldVal = pv;
                if (value != null)
                    p.val = value;
                else if (t.removeTreeNode(p))
                    setTabAt(tab, i, untreeify(t.first));
            }
        }
    }