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

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

  •  1
     
  •   BruceLe · 226 天前 · 22809 次点击
    这是一个创建于 226 天前的主题,其中的信息可能已经有所发展或是发生改变。

    鄙人前端一枚,几个月前入职了一家传统行业公司,技术栈都比较陈旧,前端开发还是 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 条附言  ·  226 天前
    有的 v 友可能误会我想表达的意思了,可能在有些 v 友眼里 20W 年薪不算什么,只能招到这样的人,我想表达的是他的技术达不到 5 年经验和这个薪资应有的水平,他实际薪资 25W+,月薪 2W 多,月薪 2W 只用过 jquery 而且写出这样的代码就有点离谱
    第 2 条附言  ·  225 天前
    leader 已经决定给我时间重构了,不过我不会看他的 shit 代码逻辑,看的脑壳疼,只能靠逆向重写一遍了,我的简历以后会添加这样一条经历,重构过一个 1W 多行的祖传屎山项目。
    那些说风凉话的人,我祝你们也接手这样的代码,与这样的人做同事。引用一句 v 友的话:就这种人 v2 还有一堆人为他辩护,可见码农这个行业已经堕落到何种程度了
    290 条回复    2021-01-27 10:03:20 +08:00
    1  2  3  
    tikazyq
        201
    tikazyq   225 天前
    可能是用脚手架工具编译过后生成的
    fengmumu
        202
    fengmumu   225 天前
    @Hoshinokozo 所以有时候看到有人一说代码行数多就说是屎山 我就。。。
    BruceLe
        203
    BruceLe   225 天前
    @mrkirkzheng #200 我也懵逼啊,刚才闲着搜了下,那个一万多行的文件里出现了 1500 多个 if
    a4854857
        204
    a4854857   225 天前
    很厉害.写出了只有他一个人能维护的代码
    zypy333
        205
    zypy333   225 天前
    我也接手过屎山,06 年开始写的项目,但是我没重构,感觉如果是局部小范围,还能重构,但是有些屎山,是一开始的架构有问题,重构不如推翻重写
    crazytudou
        206
    crazytudou   225 天前
    人生百态
    aloyuu
        207
    aloyuu   225 天前 via Android   ❤️ 5
    虽然我离职了,但是你也不用这么在背后用屎山形容我的代码,20 万年薪怎么了,老板觉得我值这个身价
    sanqian
        208
    sanqian   225 天前
    只要代码不是自己维护 谁关心他怎么写 哈哈哈
    SomeoneElseChild
        209
    SomeoneElseChild   225 天前
    @muzuiget 赞同.这玩意不就是在屎山上继续拉屎就可以了么?
    zhengjieliu1
        210
    zhengjieliu1   225 天前
    高手。
    susan0007
        211
    susan0007   225 天前
    这种情况很难理解吗?你都说了传统行业,那就是非互联网行业。有可能人家刚毕业就去了这家公司,有没有人带,没人交流,五年之后和行业脱节了而已,跳出去就好了。
    yaphets666
        212
    yaphets666   225 天前
    重构这些代码没意义 都是业务
    niguyi
        213
    niguyi   225 天前
    我寻思码农这个职业 也没有高尚过啊。。。。和快递外卖销售都是一样一种工作而已
    justjy
        214
    justjy   225 天前
    同情一下楼主,但不建议重构。

    重构能产生了什么额外商业价值?无非是自己觉得「代码可读可维护」了,后面接手代码的人如果水平不如楼主,又会进入恶性循环。
    hevi
        215
    hevi   225 天前
    我当年也接触过这样的代码( jsp ),让我接手的话,只有两条路。
    1. 重构(前后分离,我只写前,后怎么屎我都不理)
    2. 我跑路
    sarices
        216
    sarices   225 天前
    @wwk 同意你的观点
    IsaacYoung
        217
    IsaacYoung   225 天前
    哎 屎山拉屎呗
    nicebird
        218
    nicebird   225 天前
    牛逼
    freeminder
        219
    freeminder   225 天前
    @weifan 这么一看堆的屎山是志在栽棵大树呢
    l00t
        220
    l00t   225 天前
    @BruceLe #118 老板给他钱又不是因为他代码写得怎么样,是因为他的代码能实现功能,满足业务要求。代码写得再屎,那也是维护者的事,老板需要自己看吗?
    freeminder
        221
    freeminder   225 天前
    @BruceLe 368 行 res 是 null 看来会报错呀;如果 res 不可能是空,364 给的暗示又不对?
    l00t
        222
    l00t   225 天前
    @lights #171 没技术那一行都写不出来。能写出可以实现业务的代码了,那是技术够用的状态了。
    key1088
        223
    key1088   225 天前
    感觉在讨论砌墙的活
    wqgogogo
        224
    wqgogogo   225 天前
    惊得我去看了下有没有写这种的代码,不过我后端一枚,有时也要写 JS
    howoldareyou2
        225
    howoldareyou2   225 天前
    怎么了,他用汇编语言写,我更佩服他-->
    xiaomu8
        226
    xiaomu8   225 天前
    @aloyuu 我去,这是正主现身了?
    Francost
        227
    Francost   225 天前
    "月薪 2W 只用过 jquery 而且写出这样的代码就有点离谱",一句话里充满了酸和鄙视,只用过 jquery,并且写了一手屎代码,居然都值 2w 。。。
    Valii
        228
    Valii   225 天前
    为前同事辩护的怕不是自己就是这个水平
    Kirsk
        229
    Kirsk   225 天前 via Android
    风气就是这样 你把你重写的贴上来 搬砖工就没话说
    xiaoxinshiwo
        230
    xiaoxinshiwo   225 天前
    这就是代沟,远古程序猿都这么写
    nanxiaobei
        231
    nanxiaobei   225 天前
    怎么岗,我还以为是 5 年 200w+ 呢。。。
    melvin
        232
    melvin   225 天前
    老板说: 代码啥的不重要 重要的功能好用就行了 [doge]
    rbq123456
        233
    rbq123456   225 天前
    @zhang77555 程序员的薪资不和代码挂钩,应该和什么挂钩呢?业务,那不是产品的事情么?
    ily433664
        234
    ily433664   225 天前
    这算啥,我还见过 jsp 里面 java 和 html 代码混合编写的
    Reapper
        235
    Reapper   225 天前
    要不用 jquery 重构一遍?
    leeho
        236
    leeho   225 天前
    厉害, 不用 code review 的么?
    mark4zhao
        237
    mark4zhao   225 天前
    Describition 。。。
    yuyu2140
        238
    yuyu2140   225 天前
    哈哈哈,我司祖传烂代码( 10 多年前的代码,缝缝补补),时至今日每年还能贡献几百甚至上千万的收入,你信吗?
    插一句,码农也是个普通职业,辩护也不是堕落,烂代码谁都接手过,每个人都有写过烂代码的时期,希望能平常心看待这样的问题,经历的多了,就见怪不怪了
    cirzear
        239
    cirzear   225 天前
    tql
    chungon
        240
    chungon   225 天前
    这种屎一样的代码为什么会有这么多人洗?
    duanzhihe
        241
    duanzhihe   225 天前
    老项目,尤其是 3 、5 年以前的项目代码烂其实很常见,原因有可能是技术更新迭代+维护的人水平参差不齐+业务胡乱改来改去等等原因……
    这个哥们后面写的代码的脑回路的确可以看出水平不高,估计就是没有跟上时代……
    zhuweiyou
        242
    zhuweiyou   225 天前   ❤️ 1
    建议先搞清楚情况再说吧,有可能这个代码也是前人留下的.
    我也经常维护跟你截图差不多的代码,但是是别人写的啊.
    重构是不可能重构的,1.逻辑复杂,2.没有工期.
    huichao
        243
    huichao   225 天前
    读别人的代码是最难受的
    zhang77555
        244
    zhang77555   225 天前
    @rbq123456 薪资来源于你代码跑起来后运行的业务所创造的价值,
    如果另一个人写了比你更垃圾的代码,但是它承载的业务比你的更值钱,那么从出资方来看,另一个程序员应该拿到比你更多的钱.
    薪资和代码质量挂钩是个没法实际操作的事情,比如说从 code review 做起, 那么我猜最终的执行结果就是:只要发现你的代码中有不合公司规范或者效率不够极致的地方,就从你的"代码绩效"中扣钱,而写的好则成了你本身的职责. 我觉得这不是大家希望看到的
    djoiwhud
        245
    djoiwhud   225 天前   ❤️ 1
    为啥新入职的员工动不动就重构呢?

    这代码明明还可以维护。

    Vue 重写 jq 的项目,对当前而言可读性是要好很多,注意,仅仅是当前而言。再过三年,没有培训机构培训 Vue 了,换了一个 euV 框架,前端都用 euV,估计你用 Vue 写的代码是一样的被吐槽。我不信这么老的项目还有高频更新。如果不怎么更新了,重构的意义何在?

    在我这里,提出要重构这个项目,仅仅是因为看着不爽,一定会被叼一顿。你以为你领导是看这代码不爽同意你重构,他可能仅仅是看到你没啥事情可做,让你保持工作状态罢了。

    如果微软 Windows 组和 office 组的员工都像这样热衷重构垃圾代码,那不可能做成项目了。
    menghui9898
        246
    menghui9898   225 天前
    > 他是用 nodepad++写的,没有代码高亮,没有错误提示的 nodepadd++,用 nodepad++能写出这样的代码,我只能称之为神人。

    看到这句实在没忍住笑喷了
    lambdafate
        247
    lambdafate   225 天前
    毫不夸张的说, 我一个后端写的比他好 100 倍, 狗头保命.jpg
    96412hj
        248
    96412hj   225 天前
    @menghui9898 #246 那用 txt 写 java 的呢。。。。
    meiyoumingzi6
        249
    meiyoumingzi6   225 天前 via iPhone
    不记得在哪看到的了,意思是线上的代码哪怕就是一坨,他也是比你重构的代码有意义的,因为它在线上已经跑了很久了


    后来我也就很少喷代码写的烂了,
    另外就是这样直接把代码截出来总归不太好吧
    x86
        250
    x86   225 天前 via iPhone
    想起之前的同事,刚进公司不久就吐槽一个很老的项目这不行吐槽那不行,给他时间重写就哑巴了
    lovecy
        251
    lovecy   225 天前   ❤️ 1
    @LxExExl 你手上几个新需求还没实现,焦头烂额的时候,老功能出了 BUG 要你修,这时候你也会 shi 山拉 shi,然后跟同事说一句,“又不是不能用”
    kevinwan
        252
    kevinwan   225 天前 via iPhone
    我们前端 api 调用代码自动生成的,而且生成工具已开源,可定制生成任意客户端代码
    https://github.com/tal-tech/go-zero
    kalluwa
        253
    kalluwa   225 天前   ❤️ 1
    对所有的程序员抱有敬意,没啥屎山不屎山的,都是打工人,
    是山不是山,是水不是水,看山不是山,看水不是水。
    祝你好运
    zhlssg
        254
    zhlssg   225 天前   ❤️ 1
    我看楼里不少给写代码这老哥洗地的,说实话能写出这代码我觉得最多就值 6k 一个月,不能再多了,拿 25w 一年,是对公司其他前端工程师的侮辱
    netnr
        255
    netnr   225 天前 via Android
    有必要学习 《程序员的自我修养》 ^O^
    royzxq
        256
    royzxq   225 天前
    这能跑起来我还是得说一句🐂🍺的。。。

    另外,跑路吧
    yeqizhang
        257
    yeqizhang   225 天前 via Android
    @ily433664 最开始的 jsp 就是写 java 和 html 混合的呀
    c2const
        258
    c2const   225 天前
    0.这哥们要么是增加自己的不可替代性,要么他也是接的前人的代码。
    1.可能用了混淆工具,如果正规,有版本控制,去看看提交记录,当然也可能被 TA 删了。
    2.远古时期的程序员也差不多,不过当时是因为技术够深+几十万行汇编太反人类;现在的业务代码是业务逻辑经常变而且太复杂。
    3.打工者而已,面向工位编程。我现在写的代码不多,每个文件内嵌了几万行代码,编译一小时起步,和业务深度耦合,不按照我的小笔记改不了...
    IssacTomatoTan
        259
    IssacTomatoTan   225 天前 via Android
    不重构 只在后面追加 但是追加的地方可以优化就优化 你现在写的代码 以后也是被人鄙视的
    dioxide
        260
    dioxide   225 天前
    自带代码混淆 😄
    woshijidan
        261
    woshijidan   225 天前 via Android
    可能不是他写的
    henvm
        262
    henvm   225 天前 via Android
    @Desiree 如果他这个同事年薪只有 7 万左右,这公司抠门的很,从不涨什么工资。只是走的时候故意告诉他我这么虚高工资,可能提醒楼主千万不要,要低了身价。
    henvm
        263
    henvm   225 天前 via Android
    @zhlssg 除非在那种不发达的小县城,如果在一,二线城市 6K 招聘想都不用想,现在时代变了,高物价,房价。如果还 996 点话熬出病了,看个病就半个月工资没了。得不偿失。我还是觉得中国与欧美,日本,新加坡整体薪资比较是偏低,低的不是一点点,要不然为什么那么多厉害的人往外跑。
    RayDG
        264
    RayDG   225 天前
    我怎么突然乐观起来了 可怕
    henvm
        265
    henvm   225 天前 via Android
    @anxiousPumpkin 没有为他辩护吧,只是劝楼主不要去重构吃力不讨好,另外重点是楼主估计谈工资低了,心里不平衡,还是太年轻。如果楼主写的代码很厉害完全可以要价 100 万年薪。现在时代变了
    justfindu
        266
    justfindu   225 天前
    不说这些了 , 最近我们系统一个模块外包出去的, 使用 laravel , 说起来应该还有个框架约束, 结果代码就是远古时代的风格
    henvm
        267
    henvm   225 天前 via Android   ❤️ 1
    @RayDG 是啊为什么 996 会在 it 行业普遍发生,其实就是中国的 it 从业人员太老实,太嫩了。现在做上门搞点工的工人,干一天随随便便 300+块。上次请人通马桶就是 1 个小时的事情 200 多块,但是自己没工具,嫌脏。我都想做点工。
    henvm
        268
    henvm   225 天前 via Android
    @justfindu 哈哈,你还想怎么样,外包工资低属于层层克扣。能运行起来就行。要不然就不要外包了,老板也不傻,外包降低成本。
    ylqhust
        269
    ylqhust   225 天前
    不建议重构,也不建议跑路。能在屎上做业务也是一种能力。
    cmostuor
        270
    cmostuor   225 天前
    @Francost 公司给什么样的工资这和买卖一样 能把垃圾卖高价那是本事
    cmostuor
        271
    cmostuor   225 天前
    @zhlssg 现在的本科毕业生 白菜价收都要 15-25k 了 6k 你确定能招得到人? 要是我宁愿闲着发呆也不去 6k
    一个月 流水线工人努力加班都能达到这个价 干的不过是些无脑的体力活 程序员这行除了脑力还是体力的活 要想能胜任这项工作 计算机系的得花 3 年时间读大学 非计算机的的话四、五万学费去培训四个月才可以出来还不过只是会些简单技能的小白而已
    henvm
        272
    henvm   225 天前 via Android
    @cmostuor 我老家 5 线小县城。现在进工厂最低工资 4000 包吃住了,加班工资另算。不要学历和技能树限制。
    wlgq2
        273
    wlgq2   225 天前   ❤️ 1
    你伤害了很多辣鸡程序员的自尊心。
    bbao
        274
    bbao   225 天前
    [leader 已经决定给我时间重构了,不过我不会看他的 shit 代码逻辑,看的脑壳疼]

    兄弟,如果你的 leader 看到你后面 [不过我不会看他的 shit 代码逻辑] 这句话,他一定会说「我刚才说什么,不你不要动代码。」
    BruceLe
        275
    BruceLe   225 天前
    @aloyuu #207 你搁这装当事人给我唬得一愣一楞的
    CommandZi
        276
    CommandZi   225 天前
    酸了,我想转前端~
    echowuhao
        277
    echowuhao   225 天前   ❤️ 1
    吐槽人家代码可以。工资这个事情就算了。

    人家拿这个钱就有这个能力,跟代码无关。

    说回代码,代码这东西,批评人家容易。

    问题是你没有当初的环境,仅仅说代码如何如何没啥意义。
    weakish
        278
    weakish   225 天前
    > 他是用 nodepad++写的,没有代码高亮,没有错误提示的 nodepadd++

    不要这样黑 notepad++ 啊,notepad++ 也是有 JSLint 插件的(当然要安装一下),语法高亮更是默认就自带的啊
    HerrDu
        279
    HerrDu   225 天前
    看了代码之后,觉的除了对 vue 和 webpack 了解的少之外,代码格式、命名 、逻辑应该没又大问题。
    rbq123456
        280
    rbq123456   225 天前
    @zhang77555 ?你说错了吧,程序员的薪资不与代码质量挂钩,难道跟业务挂钩?业务挣不挣钱,并不是程序员能控制的,而代码质量是自己能控制的,你要把你的绩效交给业务来决定?而业务挣钱如何,是由业务本身和运营来决定的,换句话说,你觉得大家是希望把绩效交给运营来决定?另外,在大公司,你管着的只有一亩三分地,用什么来衡量一个程序员的薪资水平,不以代码以什么?
    wangritian
        281
    wangritian   224 天前
    var that = this;
    想起抖 Y 一个段子,蓝骑士送达外卖后指着屏幕对开发小哥说,这里加个 that,让它等于 this,然后下面就有权限访问了
    该不会。。。[doge]
    demoslam
        282
    demoslam   224 天前
    notepad++也有语法高亮 也能装插件啊
    BruceLe
        283
    BruceLe   224 天前
    @weakish #278
    @demoslam #282 不是黑 nodepad++,有次他让我帮他调 bug,我看到他用的就是白底黑字的那种
    zhangjiafan
        284
    zhangjiafan   224 天前
    别的不知道,但是这种代码,应该是有工具代码生成器自动生成,我自己的屎山就是很多自动生成的代码,或者直接复制粘贴,没有考虑过复用的代码。业务逻辑一天天的在催,前一秒的功能,下一秒问你改好了没有。我没有那么多时间去考虑复用,也不会去研究内存消耗,更不会去关心代码行数,百度一下复制粘贴。能 ifelse 复制下来的,绝不会考虑与或 且的逻辑符号。每次想去重构,但是几个项目就一个人维护,重构意味着不仅新需求被催着写,还得学习新技术来重构。vue2.0 写习惯了,来了个新人用 vue3,0 的,结果来嘲笑你写的 vue2.0 代码量太多, 其实没多大必要。曾经我也是那个意气风发的严谨高技术水平的程序员。现在我只是能实现业务的搬砖工。现实会把理想吊打的服服帖帖的。看完你的帖子有感而发。
    fishenal
        285
    fishenal   224 天前
    感觉是系统生成的,他是不是用了什么黑科技,手写一万行代码基本不可能,还是用 notepad++
    ncepuzs
        286
    ncepuzs   223 天前
    什么叫无可取代啊,这就叫(战术后仰
    weakish
        287
    weakish   222 天前
    @rbq123456 许多公司的奖金很大程度上是和业务挂钩的,项目大火和项目黄了拿到的奖金天上地下。去哪个组某种程度上也可以看成是内部的应聘或者跳槽,考验判断力和运气(就像代码质量相当的人在不同公司的薪资可能差异很大一样)。
    weakish
        288
    weakish   222 天前
    @BruceLe 那真是神人了……(神人说:(设计台词)我是不会用语法高亮的,用惯了语法高亮,万一将来要换单色墨水屏怎么办)
    leekafai
        289
    leekafai   221 天前
    哇原来真的是人均 20w 起步,我看到有评论说 20w 年薪校招起步了,惊了
    PoetAndPoem
        290
    PoetAndPoem   184 天前
    @zzm88104 DOM 吗
    1  2  3  
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1584 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:46 · PVG 00:46 · LAX 09:46 · JFK 12:46
    ♥ Do have faith in what you're doing.