都在说 Java 啰嗦,能问下具体怎么个啰嗦法吗?

2019-07-31 20:53:35 +08:00
 LosLord

大佬们能具体贴出代码对比举例吗?简单看了一下其他语言和 Java 比我看不出哪里啰嗦欸。

3234 次点击
所在节点    问与答
19 条回复
murmur
2019-07-31 21:04:20 +08:00
都 2019 年了还有人认为语句和关键字长度就反比于语言的运行和开发效率
murmur
2019-07-31 21:09:37 +08:00
如果考虑到 java1.8,考虑到各种 utils 或者 guava,在 idea 的加持下,唯一麻烦的就是写 json 返回值太痛苦了,怎么构造方法,用 string 反解,都没有 js 里直接返回复杂格式写的舒服

如果不考虑这些,大概能被抨击的:
流的操作,包括文件读写这些,看教科书那种文件读写的一层套一层简直痛苦
没有回调函数,当然我认为有 idea 实现个接口也没什么大不了的
cabing
2019-07-31 21:13:17 +08:00
写 java 代码比较讲究设计。
LosLord
2019-07-31 21:25:43 +08:00
@murmur json 返回值?指 web 应用 序列化 /反序列化 吗?现在很成熟了吧,没有地方用到构造方法欸。
关于一层套一层,如果自己封装个 util 是否就显得不那么痛苦了。
回调函数这方面其他语言有什么比较优雅的解决办法吗?没对比过。

@cabing 设计在所有语言的程序都要讲究吧,项目大起来复杂起来,设计的不好,岂不是要 GG。
DT27
2019-07-31 21:34:47 +08:00
PHP:
<?php
echo "Hello!";
?>

JAVA:
class Main {
public static void main(String[] args) {
System.out.print("Hello!");
}
}
cabing
2019-07-31 21:40:36 +08:00
@LosLord 尤其。
LosLord
2019-07-31 21:44:33 +08:00
@DT27 我还以为只有学生时期才会用 Hello World 来比较语言,幸亏你加了狗头。

@cabing 知识浅薄,能简单举例吗?
SuperMild
2019-07-31 21:45:50 +08:00
看看 kotlin, 非常明显把 java 简洁化了很多,肉眼可见。
LosLord
2019-07-31 21:58:00 +08:00
@SuperMild 我平常也写 Kotlin,一定程度上能简化代码,但是没那么夸张。我觉得更多的是扩展 Java。除了那些语法上的扩展显得代码简洁一点( Java11 的新特性能替代一点),设计上还是该怎么样就怎么样,简略的代码看着好像并没有那么舒服。
kx5d62Jn1J9MjoXP
2019-07-31 22:00:39 +08:00
一个单词: factory
SuperMild
2019-07-31 22:13:01 +08:00
@LosLord 随便一个普通函数(方法) Kotlin 能比 Java 少几行,乃至十几行。

至于设计上,那差距就更大了,Kotlin 有 DSL 大杀器,而且还是 type safe 的,既简洁又安全。

看着舒不舒服就不要拿出来讨论了。
twoyuan
2019-07-31 22:19:03 +08:00
啰嗦在于很多语义上明确的,本可以通过推导得到的逻辑,却不得不手动编码来表示。

例子的话感觉各种设计模式的例子就很能说明问题了
billlee
2019-07-31 23:07:52 +08:00
```java
Map<Int, String> map = new HashMap();
map.add(1, "1")
map.add(2, "2")
...
```

```scala
val map = Map(1 -> "1", 2 -> "2", ...)
```
Takamine
2019-07-31 23:35:45 +08:00
要是单方面跟弱类型的语言比代码量就是耍流氓。
可能还是一些设计模式和分层上吧,其实靠 IDE 补全,也写不了几行。
LosLord
2019-08-01 01:10:13 +08:00
@SuperMild 我使用场景的最多的节省行数的就是 val name = user.name?:""这种,其他的也是有一些,倒是不多。

@billlee
java11 :
var map = Map.of(1,"1",2,"2");

java8+guava :
Map<Integer, String> map = ImmutableBiMap.of(1,"1",2,"2");
msg7086
2019-08-01 07:01:37 +08:00
我只记得以前看 Java 打开文件读取文本要写老长一段……
NewDraw
2019-08-01 07:12:56 +08:00
空指针异常判断,当然 optional 也不失为一种优美的解决方案。
aguesuka
2019-08-01 10:17:59 +08:00
因为有 8 种基本类型,所以 jdk 里很多类和方法都要写 9 次。因为是假泛型,所以 List 转 array 还要传个数组进去。因为
cabing
2019-08-01 13:28:56 +08:00
怎么说呢。

嗯,你可以看看 java 的 collect 包~各种接口的设计

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/587990

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX