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

吐槽 5 年经验年薪 20W+前端同事写的屎山代码

  •  1
     
  •   BruceLe · 2020-12-16 20:36:30 +08:00 · 27847 次点击
    这是一个创建于 1445 天前的主题,其中的信息可能已经有所发展或是发生改变。

    鄙人前端一枚,几个月前入职了一家传统行业公司,技术栈都比较陈旧,前端开发还是 jquery 手写 dom 的开发方式,我进来之后写的新项目都是使用 vue 写的,但不维护以前的代码。现在有个同事要离职了,就把他以前写的老项目都交给我维护了,我打开一看被这代码秀的一愣一楞的,细细看了之后头皮发麻,手写 dom 拼接 html,大量行内样式夹杂其中:

    20201216_1600_ 44.png 20201216_1601_ 46.png

    这位同事年薪 20W+,5 年经验,之前写的都是这种代码,没用过 vue 之类的新技术,nodejs 和 npm 环境还是我帮他装的,我进来之后也教了他一些 vue 的东西,后面在他在新写的 vue 项目中也负责了一些功能,我后来 build 项目的时候报了一个警告,说是有个文件超过了 500Kb,我打开他提交的文件一看,乖乖,一个 vue 文件他洋洋洒洒的写了一万多行,体积达到了 600 多 Kb,细看之后,我又被他的骚代码秀到了:

    20201216_1603_ 43.png

    写的什么玩意?这是对一个布尔值取反的操作,这老哥先判断值是真的还算假的,如果为真则改为假,如果为假则改为真。我寻思这不是 a=!a 一行代码就能搞定的事吗? 后面又随便翻了下,类似的代码出现了好多次。

    20201216_1604_ 50.png

    这同事的 5 年经验是实打实的 5 年经验,一年经验用 5 年的那种,他的技术你要说他烂我还有点想反驳,前面两张图那种代码你们猜他是用什么编辑器写的?你们绝对想不到,他是用 nodepad++写的,没有代码高亮,没有错误提示的 nodepadd++,用 nodepad++能写出这样的代码,我只能称之为神人。

    后面又随便翻了下,又翻出来类似这样的,嗯,这其实是一行代码:

    Image 1.png

    接手这样的代码是真的难受,今夜之后,这世界上又多了一个伤心的人。

    第 1 条附言  ·  2020-12-16 23:56:59 +08:00
    有的 v 友可能误会我想表达的意思了,可能在有些 v 友眼里 20W 年薪不算什么,只能招到这样的人,我想表达的是他的技术达不到 5 年经验和这个薪资应有的水平,他实际薪资 25W+,月薪 2W 多,月薪 2W 只用过 jquery 而且写出这样的代码就有点离谱
    第 2 条附言  ·  2020-12-17 14:33:34 +08:00
    leader 已经决定给我时间重构了,不过我不会看他的 shit 代码逻辑,看的脑壳疼,只能靠逆向重写一遍了,我的简历以后会添加这样一条经历,重构过一个 1W 多行的祖传屎山项目。
    那些说风凉话的人,我祝你们也接手这样的代码,与这样的人做同事。引用一句 v 友的话:就这种人 v2 还有一堆人为他辩护,可见码农这个行业已经堕落到何种程度了
    290 条回复    2021-01-27 10:03:20 +08:00
    1  2  3  
    Loserzhu
        1
    Loserzhu  
       2020-12-16 20:39:31 +08:00
    吐槽代码烂谁都会,写好代码确很难。顺便,同情一下楼主。
    pecopeco
        2
    pecopeco  
       2020-12-16 20:41:55 +08:00 via Android
    跟我的遭遇差不多,同样一个文件一万多行,不过我还是咬咬牙给重构了,历时接近一个月
    dreasky
        3
    dreasky  
       2020-12-16 20:42:49 +08:00   ❤️ 24
    以后接手你代码的人也是和你一样想法的
    weyou
        4
    weyou  
       2020-12-16 20:43:05 +08:00 via Android   ❤️ 5
    等 5 年以后楼主再看看今天自己写的代码,估计心情是一样一样的
    James369
        5
    James369  
       2020-12-16 20:51:47 +08:00   ❤️ 3
    你的选择就是:做一只屎克螂,或者继续往上拉一砣。。
    18758036350
        6
    18758036350  
       2020-12-16 20:52:04 +08:00   ❤️ 5
    吐槽不牛逼,接手重构真大佬
    SupperMary
        7
    SupperMary  
       2020-12-16 20:53:58 +08:00
    笑死
    zhuangzhuang1988
        8
    zhuangzhuang1988  
       2020-12-16 20:55:00 +08:00
    能用就行.
    能给公司赚钱 更好.
    BruceLe
        9
    BruceLe  
    OP
       2020-12-16 20:55:51 +08:00
    @James369
    @18758036350 继续堆屎山是不可能的,已经和 leader 反应了,leader 表示会给我时间重构
    DuXing
        10
    DuXing  
       2020-12-16 20:57:25 +08:00   ❤️ 31
    FE:面试的时候也没问这些,问了"http 三次握手”、“一个浏览器从输入地址到打开页面都经历了什么”,我回答的都挺好。
    teawithlife
        11
    teawithlife  
       2020-12-16 20:57:28 +08:00
    贵司肯定是按照代码行数定年薪的~~

    不过话说最后一张图,vue + element-ui 不是只能这么写么?难道有其他写法?
    zhengfan2016
        12
    zhengfan2016  
       2020-12-16 20:57:28 +08:00
    哈哈哈哈心疼 lz😂
    joshua7v
        13
    joshua7v  
       2020-12-16 20:57:55 +08:00
    没有代码高亮 没有错误提示
    一样可以写代码 而且我见过的就挺多这样的
    当然他们多数都是很早期的程序员了

    工作的代码很难不变成屎山
    malloc2free
        14
    malloc2free  
       2020-12-16 21:03:52 +08:00
    有次去参加 hackathon,组到个用类 word 的文本编辑器写前端 h5 的大哥,白底黑字
    同样没用框架,同样没有代码高亮错误提示

    一言难尽,最难过的 24 小时
    BruceLe
        15
    BruceLe  
    OP
       2020-12-16 21:06:00 +08:00
    @teawithlife 那张图我是吐槽的是代码的可阅读性,连个换行没有,不同的配置项像下图这样换一下行,可阅读性不是提高很多?![Image 2.png]( https://i.loli.net/2020/12/16/TGsLtSyYglI57Ah.png)
    Kasumi20
        16
    Kasumi20  
       2020-12-16 21:09:04 +08:00   ❤️ 23
    不知道楼上嚼什么, 我思量但凡上过 6 年级, 也不会连取反都不会写
    scys
        17
    scys  
       2020-12-16 21:10:06 +08:00
    培训班的风格
    darknoll
        18
    darknoll  
       2020-12-16 21:10:55 +08:00
    @teawithlife 说明 eslint 都不会用啊
    dji38838c
        19
    dji38838c  
       2020-12-16 21:14:21 +08:00
    this.showDescribition


    Describition 是什么单词
    Bijiabo
        20
    Bijiabo  
       2020-12-16 21:16:10 +08:00 via iPhone   ❤️ 4
    根据我的经验,这种人去阿里比较适合。
    BruceLe
        21
    BruceLe  
    OP
       2020-12-16 21:17:16 +08:00
    @dji38838c 大佬你又发现了新的吐槽点,我寻思应该是 description
    CEBBCAT
        22
    CEBBCAT  
       2020-12-16 21:22:56 +08:00 via Android
    @Livid 要不换个节点?比如职场话题?或者生活?
    weifan
        23
    weifan  
       2020-12-16 21:26:10 +08:00   ❤️ 5
    前人栽树,后人就凉了...
    VDimos
        24
    VDimos  
       2020-12-16 21:29:13 +08:00 via Android
    是不是 kpi 用代码行数考核的?
    aaronlam
        25
    aaronlam  
       2020-12-16 21:40:00 +08:00
    。。。这真的很随意
    tomychen
        26
    tomychen  
       2020-12-16 22:01:47 +08:00
    这大佬是 C 语言转过来的吧
    Akat3uki
        27
    Akat3uki  
       2020-12-16 22:19:27 +08:00
    就很离谱
    Austin2035
        28
    Austin2035  
       2020-12-16 22:25:40 +08:00   ❤️ 2
    jQuery 就一定不好了么? vue 就很先进了?
    ryougifujino
        29
    ryougifujino  
       2020-12-16 22:28:39 +08:00
    边看边笑
    hoyixi
        30
    hoyixi  
       2020-12-16 22:30:01 +08:00   ❤️ 2
    非科班出身,直接从事前端开发的, 很多都没用最基本的编程素养的。 甚至有些连逻辑思维都够呛。
    前两年前端泡沫,不少人冲着薪资就入行了。一个前端,一个 iOS, 一个 Python, 都是比较好”混“的~
    love
        31
    love  
       2020-12-16 22:31:48 +08:00 via Android   ❤️ 3
    这种就是没有追求的码农,写多少年代码就是一个水平,对编程没兴趣的人干这行就是这样,这种人到处都是
    BruceLe
        32
    BruceLe  
    OP
       2020-12-16 22:34:41 +08:00
    @lookcos 我有说过 jquey 不好?没看到他写的 vue 代码一样 shit 吗?
    billjobs
        33
    billjobs  
       2020-12-16 22:36:09 +08:00   ❤️ 1
    5 年 20W+本来就说明水平不行啊,写成这样很奇怪吗
    ianva
        34
    ianva  
       2020-12-16 22:40:24 +08:00
    想看楼主自己的代码,就是好奇
    user8341
        35
    user8341  
       2020-12-16 22:48:39 +08:00
    是不是没有 code review ?
    gbin
        36
    gbin  
       2020-12-16 23:00:08 +08:00 via Android
    这代码写得确实辣鸡,楼上没必要辩解。
    BruceLe
        37
    BruceLe  
    OP
       2020-12-16 23:01:05 +08:00   ❤️ 1
    @ianva vue+eslint 风格的代码,没什么好看的,你真想看的话我也可以晒
    elfive
        38
    elfive  
       2020-12-16 23:01:54 +08:00 via iPhone
    所以说,技术最不值钱。
    技术钻研再透彻,写出的代码最牛逼,也只是个为别人(老板、甲方)写代码的。
    ianva
        39
    ianva  
       2020-12-16 23:05:06 +08:00
    @BruceLe 晒一下嘛,Code Review 都会有成长
    fuis
        40
    fuis  
       2020-12-16 23:09:40 +08:00
    毕竟这个钱也就招这样的人
    Tink
        41
    Tink  
       2020-12-16 23:10:53 +08:00 via Android
    又不是不能用
    BruceLe
        42
    BruceLe  
    OP
       2020-12-16 23:17:24 +08:00
    @billjobs 我想表达的是他的工作经验和技术水平达不到这个薪资的水平,他实际薪资 25W+,月薪 2W 多了,月薪 2W 只会 jquery 就有点离谱
    BruceLe
        43
    BruceLe  
    OP
       2020-12-16 23:25:03 +08:00
    @ianva 就是这样的喽,不过不要吐槽一些参数的命名,那些奇奇怪怪风格不一的参数名称都是后端定义的

    https://i.loli.net/2020/12/16/H6ulbWwQKm7jC1Z.png
    ianva
        44
    ianva  
       2020-12-16 23:34:30 +08:00
    上个开源项目看看吧,这代码未来挺危险的,一个文件超过 300 行时,组件和数据的交互层,业务逻辑层都在一起,看不到数据的模型,业务数据和交互状态交织在一起
    anguiao
        45
    anguiao  
       2020-12-16 23:41:19 +08:00 via Android
    这个 if-else 可还行,严重怀疑是故意的,正常人写不出这样的东西。
    duola
        46
    duola  
       2020-12-16 23:58:23 +08:00
    反正公司不敢炒了他。
    BruceLe
        47
    BruceLe  
    OP
       2020-12-17 00:05:42 +08:00
    @ianva 没啥危险不危险的,这就是一个用户列表页面,增删查改那些功能,几百行代码就搞定,后面不会有什么大的改动了
    ianva
        48
    ianva  
       2020-12-17 00:08:20 +08:00
    楼主还是虚心一点,这个重构也许是个轮回
    cmostuor
        49
    cmostuor  
       2020-12-17 00:43:54 +08:00
    不得不说这么多的 if else 看得我要崩溃 github 在垃圾的代码都比这要好看且性能好
    caaaalabash
        50
    caaaalabash  
       2020-12-17 00:49:11 +08:00
    建议别重构。。。
    mxT52CRuqR6o5
        51
    mxT52CRuqR6o5  
       2020-12-17 00:53:15 +08:00 via Android
    你让 1 年同样技术水平的新手绝对做不完这个需求的,1w 行的单文件代码 1 年经验的绝对 hold 不住的
    5 年是实打实的 5 年,只不过是用 0 编程思想歪技术路线不适合的开发工具也能顺利的把需求实现的实打实 5 年经验
    mxT52CRuqR6o5
        52
    mxT52CRuqR6o5  
       2020-12-17 00:55:49 +08:00 via Android   ❤️ 1
    就好比一颗长了 5 年的树,你是竖着长的,他是横着长的
    henvm
        53
    henvm  
       2020-12-17 01:13:06 +08:00
    我觉得楼主可以 吐槽别人 吐槽 5 年经验写的屎山代码,但是不能说人家不配这个年薪 20W+,难道楼主不该反思自己要价太低了吗?人家的工资是自己谈的自己慢慢涨的。
    henvm
        54
    henvm  
       2020-12-17 01:16:19 +08:00
    我觉得吐槽别人多年经验没学到东西或者没有长进可以,但是不能去吐槽人家拿的工资多少问题。如果自己觉得别人不如我而工资又高过我不爽,这个及时你拿到公司台面上说,公司降了他工资也不会涨你工资,即时涨了这种直接损人利己的利益还是算了。应该反思自己这么多年来是不是工资要低了。
    henvm
        55
    henvm  
       2020-12-17 01:21:38 +08:00
    @billjobs 你说到了重点了,可能人家刚进去工资也不高,20W+是慢慢涨上去的,而且这 20W+ 其实不多,很多一线 IT 公司做了 5 年远远高于这个数目的不要太多。
    20015jjw
        56
    20015jjw  
       2020-12-17 01:24:42 +08:00 via Android
    看吐
    ByZHkc3
        57
    ByZHkc3  
       2020-12-17 01:44:04 +08:00
    过份了
    q447643445
        58
    q447643445  
       2020-12-17 02:33:52 +08:00
    别人看你的代码也是这种感觉.
    anxiousPumpkin
        59
    anxiousPumpkin  
       2020-12-17 02:56:13 +08:00   ❤️ 14
    代码能写成这样,说明本身就敷衍了事不负责任。就这种人楼上还有人在为他辩护,yygq 楼主,真是惊了。
    akira
        60
    akira  
       2020-12-17 03:04:08 +08:00
    用 notepad 能写的这么整齐也是不容易了啊。。。

    能实现业务的代码才是好代码
    ligiggy
        61
    ligiggy  
       2020-12-17 10:15:16 +08:00
    吐槽完了,心情好点了吗?有这种人的存在,也是再提醒你,技术一天天在更新,写代码就要不断的学习。
    xrr2016
        62
    xrr2016  
       2020-12-17 10:19:59 +08:00
    哈哈哈,这也太坑了吧
    zhangdawei
        63
    zhangdawei  
       2020-12-17 10:21:10 +08:00
    年薪不管,吐槽代码就好了,
    HannibaI
        64
    HannibaI  
       2020-12-17 10:23:23 +08:00   ❤️ 1
    @anxiousPumpkin 吃惊+1,全部 B 了,一群 SB
    KouShuiYu
        65
    KouShuiYu  
       2020-12-17 10:31:13 +08:00
    代码写的烂还要被接收的人鞭尸😂
    abelmakihara
        66
    abelmakihara  
       2020-12-17 10:33:33 +08:00
    这确实写的很烂啊 反正我是不能接受
    像这种又没什么特别的逻辑
    还滥用$forceUpdate 也很奇葩了吧
    除了 angularjs 的时候被迫经常使用强制刷新
    vue/react/angular2 以后没用过
    method
        67
    method  
       2020-12-17 10:37:35 +08:00
    他是烂。六字真经。
    method
        68
    method  
       2020-12-17 10:39:20 +08:00
    @billjobs 你得到了它。20W+ 在校招生里也是偏低的。
    xiaomu8
        69
    xiaomu8  
       2020-12-17 10:48:20 +08:00
    你理解的工资定义跟你老板理解的工资定义是不一样的,毕竟发工资的是老板
    所以也没啥配不配的事,人家实现了老板的价值。
    sunwang
        70
    sunwang  
       2020-12-17 10:49:09 +08:00
    维护这种代码相当难受,同情楼主
    jsjgjbzhang
        71
    jsjgjbzhang  
       2020-12-17 10:53:56 +08:00
    跟我一个同事差不多,复杂业务做不了,简单业务代码写的既漂亮又精简,还时不时拿出来闻一下
    clxtmdb
        72
    clxtmdb  
       2020-12-17 11:00:21 +08:00
    虽然不是前端,但是还要同情一波(不过先等我笑完)
    2379920898
        73
    2379920898  
       2020-12-17 11:09:16 +08:00
    前有 996,后有狮山代码。。你说是公司的错,还是程序员职业操守的错呢
    JamesR
        74
    JamesR  
       2020-12-17 11:15:05 +08:00
    是不是干外包的?外包的关键是干活要快。
    fend
        75
    fend  
       2020-12-17 11:16:55 +08:00
    我笑了 希望各位 hxd 永远见不到这种辣鸡代码
    YoRolling
        76
    YoRolling  
       2020-12-17 11:18:27 +08:00
    在深圳么,在深圳让我来, 给我同样的薪水我可以写出不那么屎的代码,至少咱也 "精通" vuejs 常规操作。 手动狗头
    tianhei826
        77
    tianhei826  
       2020-12-17 11:21:38 +08:00
    害,当你花很多时间看懂前任写的一堆面向过程的代码后,你也不想把业务逻辑抽出来。就干脆让屎更屎一些。
    见过 5W 多行的 SP 吗其中还调用的 package 看到你崩溃
    Stlin
        78
    Stlin  
       2020-12-17 11:23:28 +08:00
    看着真糟心,不知道楼主要不要重构,同情一波
    leeguo
        79
    leeguo  
       2020-12-17 11:23:30 +08:00
    又不是不能用
    litujin1123
        80
    litujin1123  
       2020-12-17 11:25:41 +08:00
    @henvm 楼主就是觉得别人比他菜,然后工资高他很多而不爽,毕竟第一份工作 2k
    fengmumu
        81
    fengmumu  
       2020-12-17 11:32:20 +08:00
    插眼,想看一下这个改进后的代码
    supuwoerc
        82
    supuwoerc  
       2020-12-17 11:33:57 +08:00   ❤️ 4
    懂了 我立马去让领导给我涨到年薪 20W
    whitehack
        84
    whitehack  
       2020-12-17 11:43:11 +08:00
    竟然敢重构...只能说胆子真肥
    crackhopper
        85
    crackhopper  
       2020-12-17 11:44:22 +08:00
    这种代码写法,猜测你们公司是不是按照代码行数论绩效?哈哈。
    cidde
        86
    cidde  
       2020-12-17 11:45:25 +08:00
    年薪与代码技术无关,成长和陪伴才是年薪的决定性因素~
    bk201
        87
    bk201  
       2020-12-17 11:45:44 +08:00
    又不是不能用
    打工人何苦难为打工人
    lovecy
        88
    lovecy  
       2020-12-17 11:49:23 +08:00
    我感觉我写的前端代码和这位兄弟差不多。。。。。。虽然我是小后端吧。。
    ciddechan
        89
    ciddechan  
       2020-12-17 11:50:09 +08:00
    估计后面还有兼容性的问题
    zjsxwc
        90
    zjsxwc  
       2020-12-17 11:50:30 +08:00
    楼主被坑的好惨,什么仇什么怨,居然要维护这种代码。


    🤓
    Jiangyf
        91
    Jiangyf  
       2020-12-17 11:51:04 +08:00
    都是打工人,没必要;
    在成本和时间的限制下,大环境就是这样,能用就行;
    LZ 可以选择技术氛围好的环境,不过除了头部核心部门,基本上都在写业务代码。但最起码环境到位,这样一来对自己编程思想,习惯、风格都有好的影响吧;
    no1xsyzy
        92
    no1xsyzy  
       2020-12-17 11:52:21 +08:00
    @teawithlife 按行数定年薪还不每个配置项换一行(笑哭
    mxT52CRuqR6o5
        93
    mxT52CRuqR6o5  
       2020-12-17 11:56:25 +08:00   ❤️ 1
    你看他一个取反写的这么复杂,其实是因为他不会取反,不知道有这种运算
    5 年学习了用最少的技术特性也能实现各种各样不同的简单的复杂的需求的丰富经验
    red2dog
        94
    red2dog  
       2020-12-17 12:02:33 +08:00
    过分了啊
    PomeloChuan
        95
    PomeloChuan  
       2020-12-17 12:06:52 +08:00
    好代码写起来很难,烂代码写起来也不简单。字符串拼接的 html 可以使用 pug 这样的模板引擎,然后重复的展示隐藏之类的可以抽象化一下
    sybb
        96
    sybb  
       2020-12-17 12:08:13 +08:00   ❤️ 1
    嘿 类似经历!!!!趁机吐槽一下!!!!!!

    我的新领导,前端负责人。刚从鹅厂出来的 30 多岁老程序员了,年薪肯定不用说, 但是写的代码真的是得说一说了!!

    以前没写过 vue react ts 这类不能说是新东西的框架和规范, 罗列以下几点:

    - 用的 sublime,不装 eslint tslint prettier 等代码规范工具 每次我们拉代码下来 都是一堆黄色警告,之前在我们的委婉要求下装了 eslint, 说是项目里全是报错,又给卸了。。。
    - 不会 ts,一个 any 一把梭!!!
    - 代码里要设置 key 作为标识总是用中文作为 key 值,比如 user.type = “管理员” 。
    - 想要把某块功能的右键菜单封装一下,结果一个方法写了 1000+行(配置的数据类型全是 any,配置的数据格式还不一样。。)
    - git 只会用 sourcetree, 曾多次在主仓库覆盖我们的代码。
    - git commit message 不规范 ,经常写"no message",甚至还写过”what the fuck“。。
    - git 打 tag 用的是中文。
    wwk
        97
    wwk  
       2020-12-17 12:09:52 +08:00
    其实首先得确定这是他写的。一个项目长期迭代,维护者可能更换过很多任。另外就老代码而言,能跑是最重要的。重构需要的成本很高,除了本身开发的成本,时间成本(延误正常迭代),需要测试支持(全方面的回归测试),业务成本(大规模重构可能影响正常业务)。


    接手过单文件 1w 行的组件...表示根本不敢大刀阔斧的重构,只夹在敢趁着正常版本迭代,有测试支持的情况下,进行部分重构,除了自己得反复验证,还得求着测试大哥顺便多测测某个功能点。到离职都没重构完。。。交接的估计也得吐槽我,哈哈~
    whypool
        98
    whypool  
       2020-12-17 12:13:54 +08:00 via Android
    意思就是这样的辣鸡代码也配 20 万?
    sosilver
        99
    sosilver  
       2020-12-17 12:14:32 +08:00 via Android
    这可能就是大佬吧,糊一万行也可以 hold 住
    agdhole
        100
    agdhole  
       2020-12-17 12:18:55 +08:00
    建议换 angular,用框架来强行规范
    1  2  3  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2173 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 01:18 · PVG 09:18 · LAX 17:18 · JFK 20:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.