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

项目全部是 map 传参

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



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

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

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

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

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

    map.put("username_050114", input_username)

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

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

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

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

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

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

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

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