把 Java 写成动态语言了,越改越崩溃。

2021-08-23 14:29:12 +08:00
 hahaFck
各种 map,前台数据传到后台转换成 map 或者 list<Map>,数据库查询返回 list<Map>,方法调用传参数也是 Map,现在改个东西,完全不知道会影响到哪里,因为都是 Map 参数,方法签名一般都不变,但是 Map 里面的数据不仔细看根本不读知道都有什么,真是越改越崩溃。
另外 map 取数也是各种类型转换,各种 null 判断。
及其 ugly 的代码。
4080 次点击
所在节点    Java
39 条回复
cslive
2021-08-24 12:33:22 +08:00
居然真的有这么干的!!!!
NoDocCat
2021-08-24 14:56:37 +08:00
@James369 然而, 人家可以上 TS 做 map 的泛型
unco020511
2021-08-24 15:54:42 +08:00
之前维护过一个类似的项目,一度有了离职的想法
aneostart173
2021-08-24 16:51:09 +08:00
你抛弃了编译器,编译器就抛弃了你。
ccde8259
2021-08-24 18:43:14 +08:00
前一家一样的问题,二次开发全靠 Debug 看数据。
更可怕的是那些 void func(Map<?,?> map)方法,纯副作用函数……
122006
2021-08-24 20:24:38 +08:00
偷个懒直接拿到就 jsonobject 转为实际量就算了,在后续逻辑过程中解析的直接火葬场
kaneg
2021-08-24 22:09:12 +08:00
所以,很多人为了所谓的灵活,并且懒得定义 bean class,结果自己一时爽,😭了后来人。
tedzhou1221
2021-08-25 09:08:43 +08:00
我都怀疑你是我同事。哈哈
securityCoding
2021-08-25 09:26:02 +08:00
@bthulu 严格来说是 jdbc 搞出来的玩意
luzemin
2021-08-25 10:13:26 +08:00
面向对象的语言不面向对象编程,就是原罪
cco
2021-08-25 10:59:57 +08:00
看场景吧,因为我们的查询来源五花八门,字段也是非常的多,所以 前台 - > 接口 <- DB 都是使用 Map 传参,返回 List<Map>,恶心吗?的确恶心,但是这应该是目前开发场景的最优解。如果把这些都用对象替代,那么光定义对象就得一大堆,并不比 Map 好用。
a719031256
2021-08-25 11:50:45 +08:00
老代码?

以前遇到过这种情况,那个项目据说是一个人写后端,web 端,安卓端,外加时间短才导致代码很烂
nanmu42
2021-08-27 12:53:59 +08:00
我一般写 Go,最近有些 Flink 需求学着写一些 Java,感觉是不是因为 Java 里不习惯把 struct(class)当成纯粹的数据载体?以及 Java 里定义 class 比较麻烦?

Go 里如果数据结构是确定好的话,一般是从 JSON 直接解析到 struct (对应 Java 的 POJO ),字段和类型都是固定的,而且 struct 定义比较方便,一般没有这个烦恼。
hahaFck
2021-08-27 13:16:26 +08:00
@nanmu42 是,java 没有 struct,建一个类相比其他语言感觉成本高。
liian2019
2021-08-27 18:02:33 +08:00
维护起来不得哭了 方法入参是啥都不知道
issakchill
2021-08-30 13:02:09 +08:00
曾经在一家银行维护过这样的代码 一个月就跑路了
hahaFck
2021-08-30 13:05:25 +08:00
@issakchill 很难想象,银行都写这样的代码。
seliote
2021-09-05 20:52:11 +08:00
组里也有人这么干,一开始还想管,后面已经懒得管了,不通读代码根本不知道写的是什么玩意
night98
2021-09-26 17:52:25 +08:00
强制规范不允许使用 map 作为入参和出参啊

动态语言是动态语言的玩法,静态语言是静态语言的玩法,非要强行融合那必然死的很惨

map 仅适用于参数不固定,例如上下文传递这种,或者是模板入参必须 map,其他场景都是可以用强类型替代的

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

https://www.fyfyfm.apispeedy.workers.dev/t/797467

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

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

© 2021 V2EX