Java 的缺点就是啰嗦 Java 的好处也就是这里了吧?

2022-01-28 11:37:03 +08:00
 partystart

转了语言后 回过头来回忆下以前的做过的项目 感觉到 Java 项目的优点就是结构稳定吧

Spring 提供官方脚手架,自己公司也可以基于脚手架进行定制化开发。 无论是新的项目还是以前老的项目包层次划分统一整齐。

Maven 官方统一固定了文件路径 代码放 src 资源放 resousrce 有人想动这个路径 直接不支持 而且代码 review 直接骂的狗血淋头 我是没见过这年头有人不用 maven 做包管理的

至于业务层次包 大家好像也形成了统一的规范? Api/RPC Service Dao Mdeol 这几层大体结构

有没有同样的感想?

10177 次点击
所在节点    程序员
95 条回复
Goooler
2022-01-28 14:39:17 +08:00
直接 kotlin 大一统就完了,不要太舒服
Leonard
2022-01-28 14:42:38 +08:00
@powerman 对比 OC 写 UIKit ,SwiftUI 的花活是有点多
des
2022-01-28 14:44:50 +08:00
@chniccs 就地过年呢,没事干
powerman
2022-01-28 14:50:02 +08:00
@MakHoCheung JavaConfig 并没有那么难理解,也没有突破原先的语法,最多算是 SpringBoot 提供的一种特性,

把拉曼达放外面,实在是不敢苟同这种做法,如果有需要,干脆为这种需求定制一种声明式语法都可以。
reeco
2022-01-28 14:51:04 +08:00
@lisongeee npm 这种弱鸡拿什么跟 maven 比?同包多版本可以实现,前面已经有人回答了,自定义 classloader 就行,轻量级重量级轮子都有
lisongeee
2022-01-28 14:56:44 +08:00
@reeco 是的,你是对的
vate32
2022-01-28 14:57:46 +08:00
你们要求太高了,语法糖少嫌写着啰嗦,加点语法糖又嫌对新手不友好
tt0411
2022-01-28 14:59:05 +08:00
在企业里面, 特别是当团队成员水平各异时, 啰嗦不是坏事, 为了灵活而引入的宽松往往是 bug 的来源
Leviathann
2022-01-28 15:07:37 +08:00
@powerman 很方便啊
只是占位用的语法元素,如果没歧义的话直接就删掉好了
减少语法噪音,让人专注于逻辑本身

写 js 、ts 的时候总要写一大堆的 () =>,又丑又麻烦 ,然而大括号已经被 object literal 用了没法化简
x940727
2022-01-28 15:09:21 +08:00
@golangLover JVM 的并发吞吐差? Golang 在同等吞吐下能和 Java 一样 low pause 吗?
aicfe
2022-01-28 15:50:43 +08:00
java 也在不断发展,汲取其他语言的优点,我觉得挺好的
charlie21
2022-01-28 17:02:22 +08:00
@powerman #6 思维模型反过来说就是心智负担。除非你不要任何思维模型,否则你总有心智负担。语法糖最多不过是把设计模式做到了编程语言里(在不要任何思维模型的情况下,的确没有心智负担,但还有设计模式等着你)
wangtian2020
2022-01-28 17:17:26 +08:00
行吧,有人说 ()=> 丑和麻烦,那话就没法聊了
ostholz
2022-01-28 17:32:10 +08:00
确实 Swift 正在变成下一个 C++, 新手上来如果不通读官方教程, 很多写法看的是一头雾水.
但是再回头写 Java 就太痛苦了.
mosliu
2022-01-28 17:32:15 +08:00
真做工程,语法糖太多真没必要
idea 花点钱 语法糖省的时间自动提示都出来了。

啰嗦?也可以说是明确吧。
一段代码,写的时候复杂点,但是真的很稳定,易查错,很多问题,从问题找到代码很快就落实了。
心智负担确实少一些
SmiteChow
2022-01-28 17:35:50 +08:00
缺点是谁都能挣大钱,优点是能挣大钱。
yazinnnn
2022-01-28 17:42:11 +08:00
有人搞错了一点,kotlin 的很多 dsl 语法之类的并不是标准库的东西,而是 kotlinx 库的,比如协程

kotlin 因为语法的强大,可以自行写出来很多 java 做不到或者实现很困难的语法糖

与其说看不懂语法糖,不如说不想学新的类库而已

何况用 dsl 写程序就是未来趋势,毕竟广大 spring boy 天天在用的 spring 都有 router function 了


今天写的一点代码

@Bean
fun coRoutes() = coRouter {
GET("/queryLog") { req ->
val ipMono = nullable {
val ip = req.queryParamOrNull("ip").bind()
val vo = loggerService.queryLogByIp(ip)
vo?.let { ok().bodyValue(it) } ?: status(404).build()
}
val codeMono = nullable {
val code = req.queryParamOrNull("code").bind()
val vo = loggerService.queryLogByCode(code)
vo?.let { ok().bodyValue(it) } ?: status(404).build()
}
val badMono = status(400).bodyValue("bad request")
return@GET (ipMono ?: codeMono ?: badMono).awaitSingle()
}

GET("/sse") {
val flux = loggerService.sse().map { it.t2 }
ok().contentType(MediaType.TEXT_EVENT_STREAM)
.body(flux).awaitSingle()
}
}
abcbuzhiming
2022-01-28 17:49:27 +08:00
Java 的好处才不是啰嗦,是 Java 几乎堵死了所有可以玩魔法的路子,高手和普通人写的代码差不多。所以 Java 在软件工程化这个领域才能成为第一语言。
Chinsung
2022-01-28 17:53:33 +08:00
@golangLover #4
不支持协程,并发吞吐差 ---------这两者是一回事吗?并发吞吐差体现在哪里?
只支持一个包名的一个版本,不能共存,时常版本被覆盖 -------------我挺好奇哪个语言支持同一个同名类多版本存在。。
操作复杂 json 想吐 --------------如果 JSON 序列化框架你全用 map 接,那大概和你想要的效果差不多,而且 fastjson 封装了一些 json 对象来操作,我觉得便利性还可以
没有原生热更新 ----------------------真的吗真的吗,你要是了解 jvm 的 classloader ,你就会知道这个恰恰是比较优雅的热更新
没有 async await ------------juc 的包是写的不够好吗。。。能看到内部实现的并发工具类难道不比语言直接提供的一个关键字要靠谱点?
littlewing
2022-01-28 17:59:37 +08:00
要不要来了解下 modern c++

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

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

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

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

© 2021 V2EX