V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
exploretheworld
V2EX  ›  Java

项目全部是 map 传参

  •  1
     
  •   exploretheworld · 3 天前 via Android · 9867 次点击
    入职某大黑厂,项目全部都是 map 传参,注释不写的那种,100 万代码



    兄弟们怎么搞
    第 1 条附言  ·  2 天前
    下午看了个简单查询,一个 map 塞进 dao 查数据,然后拿到一个 List<Map>,然后遍历再从 map 取了一些神秘值拼接成一个 key,又从 map 里面取值,然后计算一个神秘新值放入 map ,最后返回前端。只能靠数据库字段注释推测每个字段的含义。

    注释 : 一句话这是个什么接口
    业务文档: 无
    接口文档: 无

    这个项目的 Map 就像一个神奇的魔法口袋,满足你所有的 deep dark fantasy
    105 条回复    2025-01-15 20:20:28 +08:00
    1  2  
    565656
        1
    565656  
       3 天前   ❤️ 9
    感受 python (*args, **kwargs)的恐惧吧
    chendy
        2
    chendy  
       3 天前   ❤️ 1
    轻轻搞,别搞坏了
    新需求好好整整,破坏性需求尽量拒,小修小补过日子
    prosgtsr
        3
    prosgtsr  
       3 天前
    我这儿的老 php 代码全是['data']['body']['cotent']['tmp']['ext']传参,一层两层三层的套,和 map 没啥区别。。看的人头疼。。
    potatowish
        4
    potatowish  
       3 天前 via iPhone
    java 吗,可能是其他语言转过来的,能实现功能就行,适应下环境
    jeffw
        5
    jeffw  
       3 天前
    有什么问题吗?
    hxpmc
        6
    hxpmc  
       3 天前
    能跑就行
    INTOX8O
        7
    INTOX8O  
       3 天前   ❤️ 54
    扩展性极强
    fffq
        8
    fffq  
       3 天前
    能跑不,能跑就行
    superedlimited
        9
    superedlimited  
       3 天前 via iPhone
    jb idea 可以装个 github copilot 插件,不清楚的地方让 ai 解释一下
    wanniwa
        10
    wanniwa  
       3 天前
    能跑就行,不用太纠结,你改造的话,出问题还要背锅
    Dreamerwwr
        11
    Dreamerwwr  
       3 天前   ❤️ 3
    我遇到过,都被我重构了,我也会跟开发说这样写带来的问题,慢慢就不会有这种情况了
    lasuar
        12
    lasuar  
       3 天前
    慢慢优化,这就是你的价值所在
    foolever
        13
    foolever  
       3 天前   ❤️ 1
    map 传参没问题但前提是有一份维护的很好的文档或注释,除此之外都是好处
    sagaxu
        14
    sagaxu  
       3 天前
    第一反应,是那个妙不可言 zoom zoom zoom 的框架

    https://www.v2ex.com/t/829440
    maichael
        15
    maichael  
       3 天前
    @foolever 要是有的话就不会有这个帖子了。
    hidemyself
        16
    hidemyself  
       3 天前
    我呆过一家公司,所有的实体全部继承自 Map
    gam2046
        17
    gam2046  
       3 天前   ❤️ 1
    没问题的,你也别管原来里面有啥参数,你需要啥,就自己再往里加,对应的地方读取就行。

    反正都屎山了,不在乎你也拉一坨。
    maichael
        18
    maichael  
       3 天前   ❤️ 1
    你如果在里面说得上话,那就慢慢整整改改,说不上话,那就代码和你有一个能跑就行。
    llsquaer
        19
    llsquaer  
       3 天前   ❤️ 1
    当你要拉屎的时候附近一般都有屎 -- 鲁达 • 字绍兴
    w950888
        20
    w950888  
       3 天前
    接手过拿长字符串传参的,满屏的切割,拆分,各种符号拼接,给我看吐了
    0xsui
        21
    0xsui  
       3 天前   ❤️ 3
    前人挖坑,侵吞红利,拍拍屁股升职加薪高升了,留下粪坑给后人……
    0xsui
        22
    0xsui  
       3 天前
    @gam2046 你不怕传参跟已有命名冲突,触发隐藏 Bug ?
    crysislinux
        23
    crysislinux  
       3 天前 via Android
    路过问一下,这个 map 它是 string 到 any 的 map 么,像 interface 那种有类型的感觉还行。
    wogogoing
        24
    wogogoing  
       3 天前
    看标题,我还以为你在说我们作坊的某些组。(狗头
    visper
        25
    visper  
       3 天前
    多好,随便加参数不用修改接口...都往 map 里堆。要知道参数作用只能看代码调试代码。
    impanghu
        26
    impanghu  
       3 天前
    我这都是 @RequestBody String data
    gam2046
        27
    gam2046  
       3 天前   ❤️ 14
    @0xsui #21 不存在的,这个时候,如果有多年屎山经验,是会避免这种情况的。比如

    map.put("username_050114", input_username)

    不但不会冲突,而且更为这座屎山增添了独特的风味。

    当后人看到此代码时,会为了这串神秘数字而抓耳挠腮(破口大骂)
    0xsui
        28
    0xsui  
       3 天前
    @gam2046 一千个 coder ,有一千个风味……
    qingxiangcool
        29
    qingxiangcool  
       3 天前
    写代码不要追求完美,能用就行,不然你会很累的。
    falsemask
        30
    falsemask  
       3 天前
    @crysislinux Java 肯定是 string 到 any 了
    EliStone
        31
    EliStone  
       3 天前
    我上个项目也全是 map 传参,天天加班干,能实现出来就不错了...
    前几天我写的新功能,都是 vo ,dto ,为什么呢,因为我要离职了所以慢慢写也没人催我
    Jinnrry
        32
    Jinnrry  
       3 天前 via iPhone   ❤️ 1
    @gam2046 一看您就是资深研发
    baolei666
        33
    baolei666  
       3 天前
    @0xsui #22 生成 uuid 或者时间戳当 key ??
    baolei666
        34
    baolei666  
       3 天前
    @gam2046 #27 阿里出来的?
    0xsui
        35
    0xsui  
       3 天前
    @baolei666 出院!
    yawn852
        36
    yawn852  
       3 天前
    哈哈哈,我们项目也是,而且这个 map 还是全局的,各个方法里面传,你都不知道这个 key 的值在哪个方法里面变动成啥样了
    pigf
        37
    pigf  
       3 天前
    我记得招银网科就是用 map
    otakustay
        38
    otakustay  
       3 天前
    就当是 js 写项目,多大点事🐶
    ignore
        39
    ignore  
       3 天前
    上个狠活吧, map.put("sql",CURD)
    cloudzhou
        40
    cloudzhou  
       3 天前   ❤️ 1
    @foolever
    map 传参除了带来一点扩展性,除此之外都是坏处
    xuanbg
        41
    xuanbg  
       3 天前
    改成实体类接收参数又不费多少事,看不过就自己改
    vultr
        42
    vultr  
       3 天前
    当然是重构啦,我是认真的。
    mumbler
        43
    mumbler  
       3 天前
    AI 时代,都不是事儿,用 cursor 打开项目目录,把代码注释补齐了,需要改什么功能让 composer 来,你跟着一起学习
    198plus
        44
    198plus  
       3 天前 via Android
    欢迎使用 dictionary language
    zgray
        45
    zgray  
       3 天前
    随口问一句,有版本管理吧。你敢信,25 年了,还有大把团队不会版本管理。
    asdhak
        46
    asdhak  
       3 天前
    @0xsui #22 加自己名字前缀
    SACKJJKLL
        47
    SACKJJKLL  
       3 天前
    还好不是汉语拼音
    chen05
        48
    chen05  
       3 天前
    前人挖坑 后人搅屎
    volatileSpark
        49
    volatileSpark  
       3 天前
    遇到过,国企项目,历史悠久,还是核心项目。入参都是 map ,反正也不敢乱改,就着这坨屎山完成自己的需求就行了。随大流,没必要纠结。
    qiaobeier
        50
    qiaobeier  
       3 天前
    高情商:只做加法,不做减法
    低情商:添屎加尿
    zoharSoul
        51
    zoharSoul  
       2 天前
    @superedlimited #9 ai 完全看不懂这种, 稍微复杂的项目就看不懂 纯瞎编
    AFOX
        52
    AFOX  
       2 天前
    能介绍下你面试被问到的问题吗?好奇不是面试造火箭
    roundgis
        53
    roundgis  
       2 天前 via Android
    @565656 註釋寫夠了也不是不能用。早期那些項目還不是這樣過來的
    issakchill
        54
    issakchill  
       2 天前
    小弟有幸也接触过,里面的 key 还要对应字典看...
    jdk 是 1.7 好像....
    一个月赶紧跑路了...
    ldyisbest
        55
    ldyisbest  
       2 天前
    感同身受。曾经需要往下游传参,设计了清清楚楚的类对象,领导直接否决,要求把对象转成 string ,丢到 map 里面😂。项目里面还充斥着各种 List<Map<String,String>>, 一个方法五个 JSONArray 当参数,一个方法两千行,四千行这种
    listen2wind
        56
    listen2wind  
       2 天前 via Android
    我今天突然发现后端传回前端的字段用的是中文
    thevita
        57
    thevita  
       2 天前
    所有方法都重写成:
    sql.execute(
    openai.chat.completions.create(, message=["hey, here is my parameters: {paraMap}, funcName: {funcName}, dbSchema={dbSchame}, how can I query data. give me sql"])
    )
    netabare
        58
    netabare  
       2 天前 via iPhone
    我之前在做 PL 作业的时候,也发现用 Java 的 Map 可以起到类似闭包作用域的作用。
    JoeDH
        59
    JoeDH  
       2 天前
    太舒服了,屎山代码可以啃好久了,可以安心混工资了
    redca
        60
    redca  
       2 天前 via iPhone
    挺好的,安心混工资,天才设计
    yy306525121
        61
    yy306525121  
       2 天前 via iPhone
    见过一个国外的很火的项目的 api ,一个 java 方法搞了一百多个参数,都不知道封装个对象
    shiloh595
        62
    shiloh595  
       2 天前
    ```java
    Map<String, Object> params
    ```
    dengji85
        63
    dengji85  
       2 天前
    map 扩展性好,支持各种修改,实现快多了
    layxy
        64
    layxy  
       2 天前
    map 是简单粗暴,第一个拉屎的人很爽,如果文档健全还可以接受,没文档后面接收需要花费较多的时间和精力了解这段逻辑,而且这玩意儿时间久了自己写的后面也不知道啥逻辑了
    xliao
        65
    xliao  
       2 天前
    有幸见过,所有微服务接口入参都是 jsonstring ,接收后转 map ,用的时候各种 get 再类型转换,最后返回结果再 tojsonstring 。惊呆了,技术负责人说这样方便扩展。。。
    miaotaizi
        66
    miaotaizi  
       2 天前
    你还没见过 mybatis 拼接 sql 拼出上万行的呢
    Felldeadbird
        67
    Felldeadbird  
       2 天前   ❤️ 2
    我是否可以这样形容:
    有一个巨大的马桶,第一个人建好后,他拉屎很舒畅,因为马桶太大了,根本不需要冲水(不用写文档)。
    第二个人过来拉屎,发现挺舒服的。又不冲水了。
    经过若干人后,在大的马桶也开始填满了,恶臭味浓厚。但是稍微搅一下,又能往里面拉一坨。。。
    lisxour
        68
    lisxour  
       2 天前
    @prosgtsr 知道数据结构的话只能补 phpdoc 了,至少有语法提示了
    lisxour
        69
    lisxour  
       2 天前
    @otakustay 大家都是 java ,就是少个 script 是吧,现在补上了
    xujia1998
        70
    xujia1998  
       2 天前
    @miaotaizi 哈哈哈哈,我见过
    PaulSamuelson
        71
    PaulSamuelson  
       2 天前
    这哥们之前该不会是写 PHP 的吧🤔️
    kandaakihito
        72
    kandaakihito  
       2 天前
    逆天,但是没有太逆天。

    我做过一个项目,里面大量接口用 Tuple 套 Map 套 List ,然后里面再包一个 Object 。

    顺带再写一堆 left join 了十几张表的 sql 语句,部分逆天的文件里面代码行数达到了 1.2w 行;

    而且缺少统筹和分工,时不时出现两个人写了相同 controller 接口,前端都不知道该对接哪个的情况;

    那项目真的是做得我乐不思蜀
    thtznet
        73
    thtznet  
       2 天前
    往大了说,以后高度智能的 AI 也就是一个 Map 而已。所以,这是符合世界潮流的。
    Maiiiiii
        74
    Maiiiiii  
       2 天前
    见过后端设计接口,请求的时候要传四五十个参数(这个业务所有接口可能用到的所有参数)不管用没用到、是不是这个接口的。然后返回也是这么多参数。还全是拼音的简写,没有文档,只能遇到一个问一个。
    linuxsuren
        75
    linuxsuren  
       2 天前
    minami
        76
    minami  
       2 天前
    这又何尝不是一种设计模式
    Xbluer
        77
    Xbluer  
       2 天前
    @foolever 数据类型都不肯定义的项目组,你觉得文档、注释能维护好好么
    xz410236056
        78
    xz410236056  
       2 天前
    别改,你感觉某个 key 可以改成 model ,万一根据业务动态配置,变 key 你就傻逼了。新业务不用就行了
    clifftts
        79
    clifftts  
       2 天前
    这种项目还没崩简直就是奇迹
    gongquanlin
        80
    gongquanlin  
       2 天前
    @gam2046 #27 和 tm 我同事似的,当时喊他过来问他写的这段代码是什么意思,他思索半天说

    “哦,这大概是乱码吧”
    yoyolichen
        81
    yoyolichen  
       2 天前
    如果文档也缺失,那就更绝了
    huzhizhao
        82
    huzhizhao  
       2 天前
    扩展性非常强
    justfortest
        83
    justfortest  
       2 天前
    @565656 python 这都不是事,我接手的 go 项目参数、返回值全是 interface ,你敢信?请求全是 map[interface]interface, 一坨大便
    panlista
        84
    panlista  
       2 天前
    @yoyolichen 都用 map 传参了肯定不会有文档的
    txzh007
        85
    txzh007  
       2 天前   ❤️ 1
    我想起了 宇宙第一大行,sdk 里面内置了一个 fastjson.接口全部都是 jsonObject,还必须是他 sdk 包里的那个
    InternetExplorer
        86
    InternetExplorer  
       2 天前
    想起了被 PHP array 支配的恐惧
    EriczzZ
        87
    EriczzZ  
       2 天前
    看来你不是做 PHP 的
    mxT52CRuqR6o5
        88
    mxT52CRuqR6o5  
       2 天前
    @foolever #13 有再好的文档也没法和 ide 配合吧,可不是除此之外都是好处,除此之外也还是有很多其他问题的
    shitcode
        89
    shitcode  
       2 天前
    防御性编程,把自己也防进去
    dzdh
        90
    dzdh  
       2 天前
    你太幸福了。

    没让你维护 1w+个元素还到处传的 php 的数组。key 都是 a111, b2311, _tmp_xxxxx 你就偷着乐吧。
    YJi
        91
    YJi  
       2 天前
    公司服务器上有一个同事跑的他自己的一个项目,我刚手贱把 jar 包下载下来看了一下,入参全是 Map<String, String> map ,响应全是 List<Map> list ,并且有从 1 到 95 命名的 controller 。
    ghost024
        92
    ghost024  
       2 天前
    @txzh007 太对了哥,我们也是
    scp3125
        93
    scp3125  
       2 天前
    @baolei666 #33 uuid 当 key ,这招狠啊,以毒攻毒了
    SgyyNero
        94
    SgyyNero  
       2 天前
    你是幸福了。这玩意你整理一下,优化一下,就可以搞 1 年
    k9982874
        95
    k9982874  
       2 天前
    @justfortest op 这个全 map 见怪不怪了,你这个是真惊到我了,后端这么写是不做人了吗?
    someonedeng
        96
    someonedeng  
       2 天前
    别动他们的,把你的 map 塞进去 ( doge
    ala2008
        97
    ala2008  
       2 天前
    差不多,我们用 json 对象
    sankooc
        98
    sankooc  
       2 天前
    正经人谁写注释啊
    areless
        99
    areless  
       2 天前
    php array lua table 写起来简直太舒服了
    justfortest
        100
    justfortest  
       2 天前
    @k9982874 真的很离谱,代码量还挺大不是小项目,我也是第一次接手这种屎山,真不知道这些人脑回路,还没有文档,人也都不在了
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2687 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 89ms · UTC 12:00 · PVG 20:00 · LAX 04:00 · JFK 07:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.