技术与管理之java中一些不该用的特性

前言

java一门优秀的软件工程语言。但是随的时代的发展,一些功能需要,一些被人吹嘘上天而毫无意义的特性,被迫实现。这些特性有些被吹嘘以为可以拯救世界,而被一些不了解的在不正确的地方,不正确的人的使用,造成很多问题。接下来由鸟菜啊深入解读这些特性,帮助大家正确的使用

不应该在用的特性

  1. lambda表达式与函数式接口
  2. 流计算API
  3. 类型推断

不该用原因

  1. 写的爽,维护成本十分大
  2. 可读性十分差
  3. 学习成本高
  4. 不方便调试
  5. 使用不正确

lambda表达式与函数式接口

这是一个被吹捧成拯救世界的特性,但是是这样吗?

// Java 8之前:
new Thread(new Runnable() {
    @Override
    public void run() {
    System.out.println("Before Java8, too much code for too little to do");
    }
}).start()
//Java 8方式:
new Thread( () -> System.out.println("In Java8, Lambda expression rocks !!") ).start();


too much code, for too little to do
Lambda expression rocks !!

当我需要进行扩展的时候 输入图片说明

从上面的途中会发现 直接异常了,需要重写。对扩展不友好

从14年jdk7发布,宣传lambda表达式。然后被很多吹成神。到现在我很少看见大牛们使用这个特性。所以在出现到现在都不看好,也不使用lambda。

流计算API

第一次简单流计算API 是使用salsa这门语言。超级难以理解,过程无法得知,无法调试等等问题,然鸟菜啊对他十分反感。

在业务代码遇到过其他人写的流计算API,鸟菜啊是直接看不懂。当那些代码出问题,鸟菜啊去看,是在看不懂,

  • 就问编写的人,你知道这些是什么意思吗?

  • 同事:我也记不住了。

  • 鸟菜啊问:为什么选择这种方法

  • 同事: 简单啊,写得简单,

  • 鸟菜啊问: 还有吗?

  • 同事: 爽,高大上,潮流啊

  • 鸟菜啊内心是:一万个某种动物...

    从分析需求,编码,调试,校验结果,花了两天的时间...

由于上面的故事发生有点就鸟菜啊无法找到以前的代码,只能请大家看一个真实的例子流计算api的问题(请点击)

类型推断


public  List<Integer> getNum(){
	List<Integer> list = new ArrayList<>();
	list.add(new Integer(1));
	list.add(new Integer(2));
	return list;
}

public void test(){}
	for(var num : getNum()){
		// 请问你要调用那个?
	    num.doubleValue();
	    num.intValue();
	    num.longValue();
	}
}

上面的代码,只是简单的表达了类型推断的缺点可读性差,容易出错,

总结

总结出来的java方面一些特性,学习成本还是比较高的。在绝大部分场景是用不到的。在代码里面只用一种风格,有利于接受,直接编码(两种选择的时候,会出现一点的考虑成本)等等。统一风格(代码风格)是架构师与架构组最重要的事情之一。

代码可读性,可扩展,严谨性,学习成本永远比代码写得爽要重要

代码可读性,可扩展,严谨性,学习成本永远比代码写得爽要重要

代码可读性,可扩展,严谨性,学习成本永远比代码写得爽要重要

写得爽,维护想死。经常是别人想死,但是你接受别人的代码时候,也会不由的骂几句。

觉得适合的场景

在业务系统,功能系统里面应该杜绝这面的特性。如果是大数据开发可以使用这面的特性。但是主要流计算API里面一些细节

猜你喜欢

转载自my.oschina.net/u/1261452/blog/1799451