各种 map,前台数据传到后台转换成 map 或者 list<Map>,数据库查询返回 list<Map>,方法调用传参数也是 Map,现在改个东西,完全不知道会影响到哪里,因为都是 Map 参数,方法签名一般都不变,但是 Map 里面的数据不仔细看根本不读知道都有什么,真是越改越崩溃。
另外 map 取数也是各种类型转换,各种 null 判断。
及其 ugly 的代码。
另外 map 取数也是各种类型转换,各种 null 判断。
及其 ugly 的代码。
|
qaz168000Aug 23, 2021
1
不是做 java 的,但是感觉这其实也是一种趋势,数据结构和内容其实也只有输入端和接收端才会关心,最多也就加个 filter 会关注
|
|
ztcaoll222Aug 23, 2021
2
那么问题来了,一开始为什么要这么做
|
|
3
开发一时爽,维护火葬场
|
|
thtznetAug 23, 2021
4
动态一时爽...
|
|
egfegdfrAug 23, 2021
5
我们隔壁组也这么些,有几次和他们一次查问题,查到奔溃。所以 自己这边严格控制 map 的使用(具体看业务情况),看到不合理的 会让大家改了。 这个还是看第一版的开发人员习惯吧
|
|
6
我们组也是一样,入参各种 map,出参一律 object,有时想知道这个 return 的 object 是什么类型的,跟到代码里面才发现,其实也是一个 map,崩溃...
|
|
golangLoverAug 23, 2021 via Android
7
一开始就不允许这样写啊。。。
|
|
wa8nAug 23, 2021
8
之前帮其他项目组救急接触过类似的代码,mybatis 参数、返回值全是 Map,我滴个乖乖,现在还有阴影
|
|
q447643445Aug 24, 2021
9
现在代码都生成还有这问题?
|
|
msg7086Aug 24, 2021
10
我甚至开始怀疑是不是 Java 圈子里就流行这么做。
手里拿到的组里的代码也是,组件之间全都是 Map<String,String>传参…… 实在不知道为什么不做一个静态类型 POJO 的输入。 |
|
kingfalseAug 24, 2021 via Android
11
现在还是不能在少定义一些 bean 的方面有什么好的解决办法
|
|
bthuluAug 24, 2021
12
这是 mybatis 带的好头
|
|
xjlnjut730Aug 24, 2021
13
不允许用 Map 做出入参就可以了。
我反正项目里从来不用,多定义点 Bean,我觉得都比 Map 好太多。维护性完全不是一个级别的。 |
|
shellicAug 24, 2021
14
可能是为了赶工期吧,毕竟老板觉得这个也简单那个也简单,所以小公司小老板用 PHP 这种语言是最合适的
|
|
kbac001Aug 24, 2021
15
之前问了下说是开发灵活..
|
|
darrenfangAug 24, 2021
16
之前维护的一个 10 多年前的项目就是这样的
|
|
aeiou520Aug 24, 2021
17
这个算好..我遇到过,用查库用 jdbc,没有 bean,全 map,接口可以在后台配置,代码存数据库,动态调用.维护怕了
|
|
zhangxh1023Aug 24, 2021
18
各种 JSONObject 满天飞的表示也差不多这种感觉。。。
|
|
James369Aug 24, 2021
19
javascript 不经常这么做么,java 不是 javascript 的缩写么
|
|
seakingiiAug 24, 2021
20
可以这么做,也可不这么做,那么问题来了,为什么一定要用 MAP 传参?
|
|
csliveAug 24, 2021
21
居然真的有这么干的!!!!
|
|
unco020511Aug 24, 2021
23
之前维护过一个类似的项目,一度有了离职的想法
|
|
aneostart173Aug 24, 2021
24
你抛弃了编译器,编译器就抛弃了你。
|
|
ccde8259Aug 24, 2021 via iPhone
25
前一家一样的问题,二次开发全靠 Debug 看数据。
更可怕的是那些 void func(Map<?,?> map)方法,纯副作用函数…… |
|
122006Aug 24, 2021
26
偷个懒直接拿到就 jsonobject 转为实际量就算了,在后续逻辑过程中解析的直接火葬场
|
|
kanegAug 24, 2021
27
所以,很多人为了所谓的灵活,并且懒得定义 bean class,结果自己一时爽,😭了后来人。
|
|
tedzhou1221Aug 25, 2021
28
我都怀疑你是我同事。哈哈
|
|
securityCodingAug 25, 2021
29
@bthulu 严格来说是 jdbc 搞出来的玩意
|
|
luzeminAug 25, 2021
30
面向对象的语言不面向对象编程,就是原罪
|
|
ccoAug 25, 2021
31
看场景吧,因为我们的查询来源五花八门,字段也是非常的多,所以 前台 - > 接口 <- DB 都是使用 Map 传参,返回 List<Map>,恶心吗?的确恶心,但是这应该是目前开发场景的最优解。如果把这些都用对象替代,那么光定义对象就得一大堆,并不比 Map 好用。
|
|
a719031256Aug 25, 2021
32
老代码?
以前遇到过这种情况,那个项目据说是一个人写后端,web 端,安卓端,外加时间短才导致代码很烂 |
|
nanmu42Aug 27, 2021
33
我一般写 Go,最近有些 Flink 需求学着写一些 Java,感觉是不是因为 Java 里不习惯把 struct(class)当成纯粹的数据载体?以及 Java 里定义 class 比较麻烦?
Go 里如果数据结构是确定好的话,一般是从 JSON 直接解析到 struct (对应 Java 的 POJO ),字段和类型都是固定的,而且 struct 定义比较方便,一般没有这个烦恼。 |
|
liian2019Aug 27, 2021
35
维护起来不得哭了 方法入参是啥都不知道
|
|
issakchillAug 30, 2021
36
曾经在一家银行维护过这样的代码 一个月就跑路了
|
|
37
@issakchill 很难想象,银行都写这样的代码。
|
|
selioteSep 5, 2021
38
组里也有人这么干,一开始还想管,后面已经懒得管了,不通读代码根本不知道写的是什么玩意
|
|
night98Sep 26, 2021
39
强制规范不允许使用 map 作为入参和出参啊
动态语言是动态语言的玩法,静态语言是静态语言的玩法,非要强行融合那必然死的很惨 map 仅适用于参数不固定,例如上下文传递这种,或者是模板入参必须 map,其他场景都是可以用强类型替代的 |