我不能一个人难受,想看看 V 友们公司逆天的代码 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
SwaggyMacro
V2EX    程序员

我不能一个人难受,想看看 V 友们公司逆天的代码

  •  2
     
  •   SwaggyMacro 71 天前 29766 次点击
    这是一个创建于 71 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我先来一张,在 Services 层里捕获异常弹出 MessageBox 。
    现在软件一运行,先弹 3 个对话框。
    此人的逆天程度远不止此,这只是一部分,今天更新完代码看到后我实在受不了了。

    SB

    280 条回复    2025-08-08 14:21:53 +08:00
    1  2  3  
    AllenZ0
        1
    AllenZ0  
       71 天前
    我蹲个位,花生瓜子饮料。
    akakidz
        2
    akakidz  
       71 天前   35
    FreeEx
        3
    FreeEx  
       71 天前
    估计是 debug 之后忘记删除了 :)
    InDom
        4
    InDom  
       71 天前   1
    @akakidz #2 看了半天没看明白咋回事, 再回过头来一看, 霍~!
    huihushijie1996
        5
    huihushijie1996  
       71 天前
    冷静你只是一个打工的 上下级反馈丢锅就行
    lujiaxing
        6
    lujiaxing  
       71 天前
    吃异常可还行. 回头发生了什么鬼晓得.
    MangoCloud
        7
    MangoCloud  
       71 天前 via Android
    还有 c#的,只有有代码就好,不算差
    HeHeDaGe
        8
    HeHeDaGe  
       71 天前
    嗨,给你看看我司写的 json ,不会用 List ,读取 key_num 然后一个一个的在读取对应值

    lujiaxing
        9
    lujiaxing  
       71 天前
    lujiaxing
        10
    lujiaxing  
       71 天前
    binge921
        11
    binge921  
       71 天前
    @HeHeDaGe 哈哈哈
    SwaggyMacro
        12
    SwaggyMacro  
    OP
       71 天前
    @FreeEx 按照我对此人的观察,他应该是认真的。
    因为他在 Model 里面也写一堆功能,然后捕获异常用 Messagebox 弹窗。


    然后一个 写数据的通讯类,不管是写 Bool 还是 String 还是 Int ,他所有的形参都是 string 类型,然后他再自己转换,写完也不返回 Bool 值,返回一段字符串说写入失败或者写入成功之类的提示。
    sks4728
        13
    sks4728  
       71 天前
    有备注, 超过 80%的代码
    SwaggyMacro
        14
    SwaggyMacro  
    OP
       71 天前
    @huihushijie1996 唉,是的。上次领导都当面笑他是不是不太熟面向对象了
    SwaggyMacro
        15
    SwaggyMacro  
    OP
       71 天前
    @HeHeDaGe 哈哈哈哈哈哈,我上一家公司的代码也是这样的,用数字当 Key ,然后这个项目的 MainActivity.java 有 7000+ 行(安卓项目)
    guanzhangzhang
        16
    guanzhangzhang  
       71 天前   1
    不用 argparser 库,读 sys.args 的 2 3 写几百行为了实现 subCommand 和 subCommand 后面的参数
    AllenZ0
        17
    AllenZ0  
       71 天前
    @HeHeDaGe 沃了个草。
    SwaggyMacro
        18
    SwaggyMacro  
    OP
       71 天前
    @akakidz 逆天,逻辑鬼才
    leochenL
        19
    leochenL  
       71 天前
    @akakidz 这接口响应的 code 千变万化 哈哈哈
    lujiaxing
        20
    lujiaxing  
       71 天前
    上面发错了. 不知道咋删. 重新发一下~


    weixind
        21
    weixind  
       71 天前
    我看到过的骨骼最惊奇的 js 代码如下:

    switch (true) {
    case case1:
    xxx;
    break;
    case case2:
    xxx;
    break;
    case case3:
    xxx;
    break;
    }

    我过于才疏学浅,完全想不到是从哪里学来的写法。
    AokiNet
        22
    AokiNet  
       71 天前
    这个我 tm 太有发言权了,7 月中旬接到的一个 vue3 的代码,之前是外包公司做的,业务逻辑就是做问卷手机的,有很多表单,tm 的狗外包崽所有逻辑全部都是直接通过下标来处理表单项,我刚做的需求碰巧就是改了其中一个表单结构,我靠这个代码给我看的天天在工位骂,佬佬们赶紧也帮我骂几句解解气
    XiaoCilang
        23
    XiaoCilang  
       71 天前
    这三个分支里,只有四个类似"jumpCondition"的字符串不一样,变量都不会起一个,100 行的代码复制粘贴了两遍
    AokiNet
        24
    AokiNet  
       71 天前
    @weixind 哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
    K332
        25
    K332  
       71 天前
    确实有,但是也懒得改,索性无视了
    yuwangG
        26
    yuwangG  
       71 天前   2
    就说能不能跑?
    ARIInV2
        27
    ARIInV2  
       71 天前
    @AokiNet 外包就别要求这么多了哈哈哈哈哈
    SwaggyMacro
        28
    SwaggyMacro  
    OP
       71 天前
    @AokiNet V 站能骂脏话吗
    ldyisbest
        29
    ldyisbest  
       71 天前
    还行,不如我同事一个函数 4000 行,一个函数 8000 行来的给力
    minami
        30
    minami  
       71 天前
    @SwaggyMacro #12 这就是传说中的 UNIX 哲学吗,建议改行去写 shell
    quanjw
        31
    quanjw  
       71 天前
    问题也不是很大,要改也简单的,弹窗改为写日志。
    flytsuki
        32
    flytsuki  
       71 天前

    492
        33
    492  
       71 天前
    还行,我这边有一个项目,之前的外包做的,百来个文件吧。90%的文件基于某一个母文件的基础上,复制粘贴,再改其中某部分的代码,用的 js ,也没有 eslint 。随便一个页面的就有大概 300 行的 state ,不敢动也不敢改。不知道哪个 state 有用,也不知道哪个 func 没用。一个页面 5000 行很正常。
    pakholeung372
        34
    pakholeung372  
       71 天前
    @lujiaxing 这种 123 命名没什么问题吧,我也是这样子的,因为我看 vscode 源码也是这样的
    zhumengyang
        35
    zhumengyang  
       71 天前
    又不是不能跑
    yvyvyv
        36
    yvyvyv  
       71 天前   1
    看完上边的代码我觉得我又行了
    54xavier
        37
    54xavier  
       71 天前   1
    这是我 19 年刚工作实习时候写的代码,后端不愿意帮我处理数据,要我前端自己遍历处理菜单,那个时候刚实习,学校学的也不好。不过后来我成熟老练之后就把这段代码截图存在微信了,用来鞭策自己,千万不能再写出这种代码!

    wysnxzm
        38
    wysnxzm  
       71 天前   2

    构造方法注入
    ytmsdy
        39
    ytmsdy  
       71 天前
    @lujiaxing #9 艹!我看第一张图的时候,还仔仔细细看了,觉得好像也没有可以吐槽的,无非就是代码行数多了点,直到我看到下面的其他图片,作为一个十几年的老码农,见过各种各样的屎山代码的我也绷不住了!
    HAZhan
        40
    HAZhan  
       71 天前
    一看是工控行业,突然就感觉正常了
    xz41023605
        41
    xz410236056  
       71 天前
    楼上各位代码还算好,大家要是见过 objective-c 代码,再想象一下屎山 OC 的话,更恶心(满屏幕字,逻辑都不想看)
    fkdtz
        42
    fkdtz  
       71 天前
    能跑就行
    代码和你,有一个能跑就行
    geebos
        44
    geebos  
    PRO
       71 天前
    @akakidz 你就说是不是 500 吧
    zhuynfox
        45
    zhuynfox  
       71 天前
    上家公司的一个同事,字段名全都是 a b a1 b1 你能想象一两千行的代码都是这种命名嘛
    sq955
        46
    sq955  
       71 天前
    services 层的 catch 不能弹窗,是为了保持 service 层单一职责吗?
    @SwaggyMacro #0
    492
        47
    492  
       71 天前
    @zhuynfox #45 这是天才,写代码自带编译的
    MangK
        48
    MangK  
       71 天前   1
    异常里谈出提示框算什么。我的神仙前辈直接抛出异常,然后在 catch 里写业务逻辑
    https://imgur.com/a/Ou1S4lm
    duan602728596
        49
    duan602728596  
       71 天前   1
    虽然我看不到后端的代码,当我请求用户信息时,后端接口返回:
    const userInfoRes: {
    data: {
    ......
    password: string;
    salt: string;
    ......
    };
    } = await fetch('http://xxxxxx')
    raycheung
        50
    raycheung  
       71 天前
    @zhuynfox #45 有没有可能这老哥是故意的,迷惑战术,谁敢接
    z1645444
        51
    z1645444  
       71 天前
    收藏了,这是 2025 best code review post XD
    MangK
        52
    MangK  
       71 天前
    ruke
        53
    ruke  
       71 天前
    @akakidz #2 非常严谨
    youyouzi
        54
    youyouzi  
       71 天前
    @lujiaxing #9 魔法数字最为致命,比拼音可怕多了
    Dkngit
        55
    Dkngit  
       71 天前
    @AokiNet #22 人挺好的 ,给你一堆注释
    ooxx2123
        56
    ooxx2123  
       71 天前
    @lujiaxing 这个没看懂,这段有什么问题吗?
    ynxh
        57
    ynxh  
       71 天前
    countInfo.value.todo.children.one.count = todoReviewStatistic?.catalogingReviewCount ll 0
    countInfo.value.todo.children.two.count = todoReviewStatistic?.useDataReviewCount ll 0
    countInfo.value.todo.children.six.count = todoReviewStatistic?.supplyDemandNewReviewCount ll 0
    countInfo.value.todo,children.five.count = todoReviewStatistic?.userAppPermission ll 0
    countInfo.value.todo.children.seven.count = todoReviewstatistic?.resourceCount ll 0
    countInfo.value.todo.children.eight.count = todoReviewStatistic?.frontendNodecount ll 0


    品一下
    lujiaxing
        58
    lujiaxing  
       71 天前
    @ooxx2123 你看下面我补充的图
    2333
    MangK
        59
    MangK  
       71 天前   7
    终于知道怎么贴图了,这必须得给大家看看,发不出来我是真难受

    54xavier
        60
    54xavier  
       71 天前   3
    兄弟们我又来了,刚刚在修改一个老项目的时候看到的



    lujiaxing
        61
    lujiaxing  
       71 天前
    @54xavier 发出了尖锐的爆鸣
    ooxx2123
        62
    ooxx2123  
       71 天前
    @MangK 涨见识了
    Cruzz
        63
    Cruzz  
       71 天前
    我这有个小老弟,跟我说,哥我发现 JSONObject 真好用,然后他所有的接口入参出参全是 JSONObject ,绝望
    stdout
        64
    stdout  
       71 天前
    你是没有见过超过 1w 行的函数,超过 1w 行的存储过程。你这些都是小儿科
    dapaoge
        65
    dapaoge  
       71 天前
    @AokiNet 注释很清楚, 已经可以了.
    labubu
        66
    labubu  
       71 天前
    @akakidz 你就说能不能用吧
    villivateur
        67
    villivateur  
       71 天前
    建议你看看我们传统工业行业的垃圾 C89 代码,你这至少缩进很好看了,那些搞硬件的人写的代码才是字面意义上的屎。
    SuperSuperCoder
        68
    SuperSuperCoder  
       71 天前
    挂我是吧
    sthwrong
        69
    sthwrong  
       71 天前
    @Richared #63 对的,我之前回复的那人除了 map 也喜欢 JSONObject 。
    jikun
        70
    jikun  
       71 天前
    @492 #33 怎么感觉像是后端写的,我之前也碰到一个项目(后端写的),每个页面很多 state ,不敢删不敢删
    fionasit007
        71
    fionasit007  
       71 天前
    @lujiaxing #58 意思是从数字变成 new 了?说实话这种我也干过哈哈,一般情况 123 这种是改的区别不大,要是后面重写,原方法又要用,就起个 new ,这样方便看那一版才是差别最大的一版
    Aaron01
        72
    Aaron01  
       71 天前 via iPhone
    看得我都有自信了,看来代码是能跑就行
    sthwrong
        73
    sthwrong  
       71 天前
    @sthwrong #69 额,好像在另外一个帖子回复的,写 java 的,map ,jsonObject, 代码主打一个正常场景能跑就行,异常场景等他被开了给他填坑的人处理。
    fionasit007
        74
    fionasit007  
       71 天前
    @MangK #59 catch 里面又异常了咋办
    irisdev
        75
    irisdev  
       71 天前   1
    看不懂,这到底是 api 项目还是客户端项目,客户端项目 messagebox 提示下有问题吗
    hellodigua
        76
    hellodigua  
       71 天前
    见过一万行的表单文件吗,一模一样的还有 6 份
    darksword21
        77
    darksword21  
    PRO
       71 天前
    如果他们都能有工作,那我不应该担心不好找工作
    lonjin
        78
    lonjin  
       71 天前
    @MangK #48 别的我没笑 你这个是真把我整笑了
    Greendays
        79
    Greendays  
       71 天前   21
    某数据库字段名……
    hwdq0012
        80
    hwdq0012  
       71 天前   1
    mccoymir
        81
    mccoymir  
       71 天前
    哈哈
    olaloong
        82
    olaloong  
       71 天前   2
    欣赏一下,猜猜还有多少
    更骚的是每个方法里是跑 groovy 脚本
    真正的防御性编程。好消息是这玩意已经成为遗迹,不在生产跑了
    K332
        83
    K332  
       71 天前
    @Greenday sex 是认真的么?
    yhxx
        84
    yhxx  
       71 天前
    if userName = '张三', return score = 100
    if userName = '李四', return score = 110
    if userName = '王五', return score = 120
    .....

    一共几千个

    某政府部门的查分网站 js 代码
    xiaoMax
        85
    xiaoMax  
       71 天前
    @54xavier 更好的写法思路是怎么样的,我也写过,后面这样的场景少,刚想了下该怎么优化,暂时没想道好的优化方法
    BestPix
        86
    BestPix  
       71 天前
    最近在用 ai 补注释哈哈
    zhuynfox
        87
    zhuynfox  
       71 天前   1
    @raycheung 防御性编程是吧
    dddd1919
        88
    dddd1919  
       71 天前
    @akakidz #2 注释和代码都很难绷
    raycheung
        89
    raycheung  
       71 天前
    @zhuynfox #87 是说,啊哈哈哈。我只能这么想了,不然这命名也是没谁了,过几天自己都看不懂了~
    pandoudousteve
        90
    pandoudousteve  
       71 天前
    昨天我边上老哥还在嘲笑另外一个开发写的 for ( int i=0;i<xxx:i++),说他怎么这个耿直,看了这个帖子,释怀了
    dddd1919
        91
    dddd1919  
       71 天前
    @54xavier #60 贵司代码被升龙拳袭击过么
    KikuCN
        92
    KikuCN  
       71 天前
    @weixind 这种写法还挺常见的吧,避免多层 if 嵌套
    ```js
    switch (true) {
    case score >= 90:
    grade = "A";
    break;
    case score >= 80:
    grade = "B";
    break;
    case score >= 70:
    grade = "C";
    break;
    default:
    grade = "D";
    }
    ```
    Habyss
        93
    Habyss  
       71 天前
    @Greendays #79 one two three flour? flve?? sex???????
    nekoneko
        94
    nekoneko  
       71 天前


    好多这种循环里面查数据库的代码. 一共三百行的数据查二十刚出来要两秒
    K332
        95
    K332  
       71 天前
    @olaloong 太牛了,很有想象力
    la2la
        96
    la2la  
       71 天前
    @HeHeDaGe 哈哈哈,你别说,从某种意义上还挺清晰。排查问题直接说序号
    nzynzynzy
        97
    nzynzynzy  
       71 天前
    这个 i18 可不是 internationalization 的意思,而是前面已经有了 i 、j 、k 之后就开始 i1 、i2 一直到了 i18 。大便一样的代码,全是 magic number
    DyingSwan
        98
    DyingSwan  
       71 天前
    @Greendays sex six 哈哈哈哈哈
    satoru
        99
    satoru  
       71 天前
    为什么现在的程序员这么喜欢 try catch 整个方法?是觉得自己在写框架核心吗
    assiadamo
        100
    assiadamo  
       71 天前   1
    有些人自己写写错的代码就算了,受不了的是绝对自信自己是对的,说别人不对逼别人改,给他一堆证据还不承认,也不自己去求证,逼逼叨叨的
    1  2  3  
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     935 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 18:57 PVG 02:57 LAX 11:57 JFK 14:57
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86