吐槽下前端烂代码 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ChefIsAwesome
V2EX    职场话题

吐槽下前端烂代码

  •  
  •   ChefIsAwesome 2022-03-12 17:15:11 +08:00 4020 次点击
    这是一个创建于 1316 天前的主题,其中的信息可能已经有所发展或是发生改变。

    获取了这样的一个数据:

     data: { foo: { bar, }, } 

    接着他把这数据传给组件。传的是 foo 的数据,字段名却写成了 bar 。

     <Component :bar="foo" /> 

    接下里他写了好几十个组件,全都这么干。this.bar.bar 这样的写法频频出现,他也无所谓,破罐子破摔了。

    我这是造了多大的孽,才得来重构这种鬼东西。

    25 条回复    2024-10-15 14:23:18 +08:00
    neutrinos
        1
    neutrinos  
       2022-03-12 17:28:51 +08:00 via iPhone
    老板听到重构就觉得你在摸鱼
    gouflv
        2
    gouflv  
       2022-03-12 17:41:38 +08:00 via iPhone
    说实话,我自己写的 vue 项目,都不太敢重构
    EPr2hh6LADQWqRVH
        3
    EPr2hh6LADQWqRVH  
       2022-03-12 17:43:41 +08:00 via Android
    这几个框架层层盘剥,前端的可维护性简直就是笑话
    EPr2hh6LADQWqRVH
        4
    EPr2hh6LADQWqRVH  
       2022-03-12 17:45:24 +08:00 via Android   2
    前端最常见的维护手段就是整体重写,重写之后等着过两年再次重写
    tonytonychopper
        5
    tonytonychopper  
       2022-03-12 18:19:24 +08:00
    说明了 lint 和 cr 的重要性= =
    shakaraka
        6
    shakaraka  
    PRO
       2022-03-12 18:39:03 +08:00
    没有类型就是这个样子
    vivipure
        7
    vivipure  
       2022-03-12 19:26:50 +08:00
    目开发 code review 还是有必要的
    kunkunzhang
        8
    kunkunzhang  
       2022-03-12 20:00:24 +08:00
    一定要 cr ,条件允许的话一个 pr/mr 最好两个人以上 cr 通过再合,大家互相纠正,为了保证代码质量也为了一起进步
    hhjswf
        9
    hhjswf  
       2022-03-12 21:20:21 +08:00 via Android
    前端有什么重构的必要吗
    wu67
        10
    wu67  
       2022-03-12 21:33:41 +08:00
    讲真, 如果不是公用组件, 其实根本不用管太多, 因为说不定下周就改了, 或者写完丢上去就再也不会动了, 思考简直浪费时间, 在老板面前也讨不到好...

    个人认为只有反复 /多处使用的的公共组件才有规划和重构的需要, 至于其他的, 能把数据逻辑和命名捋清就行
    liyang5945
        11
    liyang5945  
       2022-03-12 23:29:26 +08:00   1
    让你见识见识我司大神的代码
    Terminator0826
        12
    Terminator0826  
       2022-03-13 04:20:37 +08:00 via Android
    this.爸.爸
    yanqing07
        13
    yanqing07  
       2022-03-13 08:46:12 +08:00
    @liyang5945 看起来是 jQ 时代的产物。如果是那个时代的代码,我觉得可以理解。那时候没有 lodash ,没有 filter/map/reduce 这些大家都是层层循环的多
    liyang5945
        14
    liyang5945  
       2022-03-13 09:13:26 +08:00
    @yanqing07 #13 是 jq 时代的没错,但是到 2020 年他仍然在写这种代码,真的恶心人
    darkengine
        15
    darkengine  
       2022-03-13 11:41:28 +08:00
    如果是完全接手了,用 IDE 给重命名了吧,不然不知道啥时候一个没注意就出 bug 了
    kingjpa
        16
    kingjpa  
       2022-03-13 12:28:47 +08:00
    @liyang5945 糟糕,这代码是我喜欢的风格
    cszchen
        17
    cszchen  
       2022-03-13 12:33:38 +08:00 via iPhone
    @liyang5945 糟糕,是心动的感觉
    liyang5945
        18
    liyang5945  
       2022-03-13 13:32:40 +08:00   1

    @kingjpa #16
    @cszchen #17 再来一点,注意行号
    kingjpa
        19
    kingjpa  
       2022-03-13 14:01:20 +08:00
    @liyang5945 我收回我说的话
    langzibuhuishou
        20
    langzibuhuishou  
       2022-03-13 14:06:52 +08:00
    只会一点点前端,看了楼上截图的代码。带入场景,如果是自己接手的话,已经开始头疼恶心了。
    luffy
        21
    luffy  
       2022-03-13 15:17:32 +08:00
    我猜猜:

    1. 楼主大概率在 996 类型的公司
    2. 应该是民企
    3. 这个职位的前端面试,应该不会面系统设计
    4. 这个项目应该也没开始多久,时间不长
    5. 项目经理或者 leader 应该不关心代码质量,更关心进度
    6. 你们应该没有 code review 机制
    7. 老板不关心技术好坏
    8. 团队内应该没有高手
    9. 团队氛围应该基本没有


    不知道猜中几条
    darkengine
        22
    darkengine  
       2022-03-13 20:35:45 +08:00
    @liyang5945 #18 这种莫名其妙的缩写,如果没有需求文档(大概率没有)估计得对着后端接口源码才能搞懂是要干啥。。。
    jones2000
        23
    jones2000  
       2022-03-14 00:30:50 +08:00
    一个函数超200行就需要重构
    一个函数里面循环嵌套>2就需要重构
    一段代码在4地方以上重复出现,就需要移到公共库里。

    大家都是混口饭吃,能跑通就行了,毕竟都是公司项目,代码是属于公司的,拿一天钱干一天活。如果是自己的产品应该就不会这么搞了,毕竟是自己混饭吃的东西了。
    ChefIsAwesome
        24
    ChefIsAwesome  
    OP
       2022-03-14 11:17:13 +08:00
    @darkengine 我这一堆 if (flag) 的代码。flag 是啥意思怕是永远也不知道了,好在即使这么写影响也不大。
    supuwoerc
        25
    supuwoerc  
       2024-10-15 14:23:18 +08:00
    @liyang5945 糟糕,是心梗的感觉!
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2510 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 11:48 PVG 19:48 LAX 04:48 JFK 07:48
    Do have faith in what you're doing.
    ubao msn 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