分享一段我司前辈的代码,哈哈! - V2EX
请不要在回答技术问题时复制粘贴 AI 生成的内容
lilei2023

分享一段我司前辈的代码,哈哈!

  •  
  •   lilei2023 Jun 16, 2023 33221 views
    This topic created in 1062 days ago, the information mentioned may be changed or developed.

    Imgur

    Supplement 1    Jun 16, 2023
    老哥们啊,要不就此打住吧!看完大家留言,感觉确实不妥!自省!
    310 replies    2023-06-19 09:19:58 +08:00
    1  2  3  4  
    BlueBing
        1
    BlueBing  
       Jun 16, 2023   6
    写的蛮好,一眼懂。
    LeegoYih
        2
    LeegoYih  
       Jun 16, 2023   249
    嘲讽前辈,理解前辈,成为前辈。
    Moyyyyyyyyyyye
        3
    Moyyyyyyyyyyye  
    PRO
       Jun 16, 2023   1
    简单逻辑简单写,还整个设计模式吗
    newboy1
        4
    newboy1  
       Jun 16, 2023
    如果 webstorm 估计会提示,还能一键转掉
    qifeng7
        5
    qifeng7  
       Jun 16, 2023
    所有这个应该怎么写?
    yazinnnn
        6
    yazinnnn  
       Jun 16, 2023
    @LeegoYih
    超越前辈.exe
    iyiluo
        7
    iyiluo  
       Jun 16, 2023   7
    没毛病,鬼知道 type 有多少种
    2I0Mto2kjm0c0B9i
        8
    2I0Mto2kjm0c0B9i  
       Jun 16, 2023   14
    没啥毛病,逻辑清晰,用三元逼格会高点?
    asLw0P981N0M0TCC
        9
    asLw0P981N0M0TCC  
       Jun 16, 2023   1
    又不是不能跑
    tsohgdivil
        10
    tsohgdivil  
       Jun 16, 2023   2
    有啥好笑的
    sockball07
        11
    sockball07  
       Jun 16, 2023
    好奇 前端都不定义常量吗 也没注释这个 2 是什么东西
    meteor957
        12
    meteor957  
       Jun 16, 2023   2
    以前我还会看看,现在感觉好无聊... 可能是我岁数大了
    lowett
        13
    lowett  
       Jun 16, 2023   2
    代码配色挺好啊,看着很舒服
    div id="r_13227210" class="cell">
    taotaodaddy
        14
    taotaodaddy  
       Jun 16, 2023   1
    三元倒不至于,无非是
    this.isSms = (channelType == 2);
    说实话如果贵司考核代码行数,宁愿像你前辈那样写...
    Xbluer
        15
    Xbluer  
       Jun 16, 2023   1
    挺好的。多了几行,把逻辑运算和赋值分开,简单明了。
    Helsing
        16
    Helsing  
       Jun 16, 2023 via iPhone   1
    有什么问题吗,除了没有把 2 定义为不可变常量
    lilei2023
        17
    lilei2023  
    OP
       Jun 16, 2023
    主要是想起来自己刚学的时候,也是这样写的,猜测应该是刚入门的前辈的代码
    taotaodaddy
        18
    taotaodaddy  
       Jun 16, 2023   3
    魔法数字确实应该重构
    vdrapb
        19
    vdrapb  
       Jun 16, 2023   1
    整挺好,一眼就知道他要干嘛
    xujinkai
        20
    xujinkai  
       Jun 16, 2023 via Android   3
    说不定是以前有好几个 if else 现在删的就剩这个了 每一段历史代码都有一段故事
    cwWqjBJJRPak
        21
    cwWqjBJJRPak  
       Jun 16, 2023 via Android
    难道你还想让他用 channelType===2 吗?!
    jsrunner
        22
    jsrunner  
       Jun 16, 2023
    自从自己写了烂代码太多了,现在小弟不喷其他人了
    thorneLiu
        23
    thorneLiu  
       Jun 16, 2023 via Android   6
    @iapplebear 用得着三元?
    still97
        24
    still97  
       Jun 16, 2023
    @xujinkai 也有可能一开始写完发现只有一行,考虑到代码行数的考核指标,苦思冥想,改成这样了
    gosansam
        25
    gosansam  
       Jun 16, 2023
    应该是删了别的 else 吧
    isno
        26
    isno  
       Jun 16, 2023   1
    真没必要笑话人家,也没必要在这种小技巧上争强好胜!
    lilei2023
        27
    lilei2023  
    OP
       Jun 16, 2023
    @lowett vscode monokia
    lyxeno
        28
    lyxeno  
       Jun 16, 2023
    成为前辈!
    javen73
        29
    javen73  
       Jun 16, 2023
    绩效按代码行数吗?
    ixixi
        30
    ixixi  
       Jun 16, 2023   9
    并不是几行所谓的不优雅代码 就能看出别人水平

    写一堆自认为风骚的代码 对下个人来说可能就是屎山

    多写几行没问题
    shyrock
        31
    shyrock  
       Jun 16, 2023
    OP 把自己的版本发出来,让 v2er 对两者打分看看。
    Ricardoo
        32
    Ricardoo  
       Jun 16, 2023   1
    其实挺好的。
    如果是自己的私有代码,随便使用利用语言特性,一行代码搞定.
    但是如果是项目代码,一眼能让人看懂的代码就是好代码,而且这种代码方便在分支中增加逻辑,想想善变的需求,你以为前辈在初学层级,实际人家是懂业务懂代码的=。=!
    wakarimasen
        33
    wakarimasen  
       Jun 16, 2023   1
    那么比较优雅的写法是下面这样吗?
    isSms = computed( () => channelType === 2 )
    lilei2023
        34
    lilei2023  
    OP
       Jun 16, 2023
    嘲笑谈不上,谁不是从 0-1 开始的,只是感慨,项目这么久了也没人加注释,没人优化
    ksco
        35
    ksco  
       Jun 16, 2023   6
    楼上都给我看傻了,这都能洗?
    Yukiteru
        36
    Yukiteru  
       Jun 16, 2023   1
    简单易懂,没毛病。
    lilei2023
        37
    lilei2023  
    OP
       Jun 16, 2023
    @angrylid 要是我现在写,肯定写成你这样了
    @shyrock 看看#33
    miaotaizi
        38
    miaotaizi  
       Jun 16, 2023   1
    代码写再好, 跟业务不匹配有什么用?
    Huelse
        39
    Huelse  
       Jun 16, 2023
    硬要说的话也就判等和枚举有问题,而且我记得会被编译成 this.isSms = ...
    erwin985211
        40
    erwin985211  
       Jun 16, 2023
    现在公司好多这样的代码 主要搞得一个组件就有 4 、500 行,看着很难受
    iOCZ
        41
    iOCZ  
       Jun 16, 2023   2
    能一眼看懂的都是好代码
    Vegetable
        42
    Vegetable  
       Jun 16, 2023   33
    这个有很多改进的方法,但这种代码并不值得嘲笑。

    这个代码足够简单,虽然写的不优雅,但是也没带来什么问题,甚至可以非常简单的改写成 computed 。写多了业务代码就会意识到,庞大的项目中,类似这种缺乏设计的细节肯定会非常多,代码最关键的是可靠而不是漂亮。如果一段不太好的代码并没有带来理解上的困难和性能上的问题,他就是标准的,合格的代码。
    caqiko
        43
    caqiko  
       Jun 16, 2023   1
    @taotaodaddy #14 这个比 33 楼更直观
    fisherman0459
        44
    fisherman0459  
       Jun 16, 2023
    @angrylid 只是 watch 变动, 不能 computed 依赖吧
    wulili
        45
    wulili  
       Jun 16, 2023   8
    虽然一行代码能搞定
    但是这种写法其实更好,不明白 OP 在笑啥。。。。。
    lincanbin
        46
    lincanbin  
       Jun 16, 2023   1
    可能考核代码行数,我这边就是这样,代码都成屎山了。
    还在坚持少写没必要代码的人可能只有我了。
    zjw7sky
        47
    zjw7sky  
       Jun 16, 2023   4
    虽然一行代码能搞定
    但是这种写法其实更好,不明白 OP 在笑啥。。。。。
    zsc8917zsc
        48
    zsc8917zsc  
       Jun 16, 2023   1
    写成#33 楼的好处是什么呢?
    zj9495
        49
    zj9495  
       Jun 16, 2023
    this.isSms = channelType == 2 ? true : false

    你怕是没有见过这种写法的
    ksco
        50
    ksco  
       Jun 16, 2023   1
    这段代码暴露出的最大的问题,是贵司根本没有任何实际意义上的 code review 。一个允许将这样的代码提交到主线的项目,我有理由详细其他的地方也是屎山,为了身心健康,快跑吧。
    oatw
        51
    oatw  
       Jun 16, 2023
    楼主是不是想说用 computed ?
    343
        52
    343  
       Jun 16, 2023   2
    这么写很好,甚至推荐所有开发这样写。
    因为不知道后面产品会增加什么需求,可能在这个判断条件下,还会增加非常多的代码。
    wei2629
        53
    wei2629  
       Jun 16, 2023
    楼主能不能贴个标准答案,我想学习下怎么写。
    loveumozart
        54
    loveumozart  
       Jun 16, 2023   2
    程序员不应该抠这些细节,这种思维方式不好
    MangoCloud
        55
    MangoCloud  
       Jun 16, 2023 via Android   9
    程序员就是喜欢喷别人的代码,这代码不好吗,小小年纪以为懂一点代码技巧就可以纵横江湖了
    Narcissu5
        56
    Narcissu5  
       Jun 16, 2023   2
    评论区居然这么多人没有看出问题在哪儿。。。
    superedlimited
        57
    superedlimited  
       Jun 16, 2023 via iPhone
    @iapplebear 这是半前辈
    westoy
        58
    westoy  
       Jun 16, 2023   1
    这代码挺好的啊

    等增加需求出来一个 chanelType = 3/4/5/6 , 处理的东西可能不止一个 this.isSms

    这段代码只需要根据情况增加块

    用三元或者 map 就需要大改了
    evil0harry
        59
    evil0harry  
       Jun 16, 2023
    我觉得是删了 else
    cwWqjBJJRPak
        60
    cwWqjBJJRPak  
       Jun 16, 2023 via Android
    @zsc8917zsc 好处就是传进来一个'2'直接死逼
    Hilong
        61
    Hilong  
       Jun 16, 2023
    如果是我肯定不会写成这样,但是,别人的就随别人去吧
    HENQIGUAI
        62
    HENQIGUAI  
       Jun 16, 2023   1
    你以为人家在第一层,其实人家在第三层
    RobbySSLu
        63
    RobbySSLu  
       Jun 16, 2023   1
    尊重前辈,因为你终究会成为前辈。
    Marven
        64
    Marven  
       Jun 16, 2023
    如果你觉得有问题,你给改了就行,发到网上来,意义在哪呢,不明白 OP 在笑啥
    jin7
        65
    jin7  
       Jun 16, 2023   1
    简单易懂没毛病
    Xianmua
        66
    Xianmua  
       Jun 16, 2023 via iPhone
    7gugu
        67
    7gugu  
       Jun 16, 2023   3
    工资就这么多,工期就这么多,能用就行,又不是不能跑,说不定还没开发完,项目就倒闭了
    wu67
        68
    wu67  
       Jun 16, 2023   1
    上面说三元的真是没眼看
    this.isSms = (channelType === 2)

    还有说需求增加 3 4 5 6 的, isSms 这么大个布尔值你硬是当他透明呀...
    murmur
        69
    murmur  
       Jun 16, 2023   1
    @ksco 前端简单的 if-else 自动转三元是 babel 完成的啊,而且别人在 true 或者 false 这里可以随时扩展其他逻辑

    我认为没毛病
    alanhe421
        70
    alanhe421  
       Jun 16, 2023   1
    这个并没有问题
    shyrock
        71
    shyrock  
       Jun 16, 2023   2
    @lilei2023 说实话#33 的箭头函数什么的引入了更多的语法约定,且因为这些约定不符合自然语言,反而增加了阅读者的心智负担。
    比方一段使用说明,用白话现代文写出来 100 字,精炼成文言文 25 字。但是文言文版本并不能说就是好的。
    incheon
        72
    incheon  
       Jun 16, 2023
    楼主没博到认同, 有点遗憾
    murmur
        73
    murmur  
       Jun 16, 2023   1
    @wu67 我们有的需求是需要判断 null 或者 undefined 的,谁跟你说 isSms 是 boolean
    cwWqjBJJRPak
        74
    cwWqjBJJRPak  
       Jun 16, 2023 via Android
    @wu67 我发现很多人都没弄清一个等号两个等号三个等号的含义
    GzhiYi
        75
    GzhiYi  
       Jun 16, 2023   1
    楼上没说到重点,不过 OP 想说的重点可能也是 if else 应该换为三元运算符。但这里最重要的是没把 channelType 的值设置为常量,如果在 TS 中,应该设置为 enum ,这给接手的人怎么理解 2 是什么意思。
    Smilencer
        76
    Smilencer  
       Jun 16, 2023   1
    简单易懂没毛病
    代码炫技都是得啊施啊波
    westoy
        77
    westoy  
       Jun 16, 2023   1
    @wu67

    万一出现一个 3, 不去动 isSms, 而是让页面强制跳转到实人认证呢?

    追加功能都跟原先设计的一致就不会所有项目必然屎山化了
    coolzjy
        78
    coolzjy  
       Jun 16, 2023   3
    工作经验三年内,鉴定完毕。
    dbow
        79
    dbow  
       Jun 16, 2023
    业务代码是经常要改的, 给未来修改留下方便, 这是基操。
    Anarchy
        80
    Anarchy  
       Jun 16, 2023   1
    不觉得这是烂代码,ChannelType 的隐藏意义就是可能存在多种。设计这个结构是未来这段逻辑需要演变成这个结构,预先写成这样后面加功能的时候一眼就能找到位置在哪里并做修改。关于直接用数字 2 就是犯懒了,有时候逻辑简单并且后续也大概率是自己主导的代码容易这样,这算是不好的习惯吧。
    MuSeCanYang
        81
    MuSeCanYang  
       Jun 16, 2023   1
    简单易懂没毛病
    dudubaba
        82
    dudubaba  
       Jun 16, 2023   1
    以前觉得这种多余,直接等于 channelType === 2 这种多好,但是这个条件下还有其他赋值,代码就得改成 if else 那还不如最早就用这种。
    danhua
        83
    danhua  
       Jun 16, 2023   1
    感觉没什么毛病,简单易懂。或者说可以写简单点但是难懂增加不可替代性。
    LaGeNanRen
        84
    LaGeNanRen  
       Jun 16, 2023
    我约了个 meeting ,下班你待一下我们聊聊
    @lilei2023
    xyjincan
        85
    xyjincan  
       Jun 16, 2023
    改个变量名称 this.sms 咋样
    rivercherdeeeeee
        86
    rivercherdeeeeee  
       Jun 16, 2023   1
    写的没有问题,记住工作和打工二码事
    hideonwhere
        87
    hideonwhere  
       Jun 16, 2023
    弄不好原本还有别的业务然后删掉了
    但是这种也不影响就是了
    kuaner
        88
    kuaner  
       Jun 16, 2023   1
    不明白 OP 在笑啥
    fresco
        89
    fresco  
       Jun 16, 2023 via Android   1
    op 刚上班可能
    twofox
        90
    twofox  
       Jun 16, 2023
    我朋友在的公司,他们的后端提供的接口是中文的
    炸裂
    HFX3389
        91
    HFX3389  
       Jun 16, 2023
    笑完记得改代码,别只顾着笑
    sl0000
        92
    sl0000  
       Jun 16, 2023
    用 switch 效率高点
    LawlietZ
        93
    LawlietZ  
       Jun 16, 2023   1
    你在嘲笑啥呢 我觉得是你年轻了。。。
    F281M6Dh8DXpD1g2
        94
    F281M6Dh8DXpD1g2  
       Jun 16, 2023
    以前不只有 channelType == 2 这一个条件吧
    Aviciii
        95
    Aviciii  
       Jun 16, 2023   1
    虽然一行代码能搞定
    但是这种写法其实更好,不明白 OP 在笑啥。。。。。
    GzhiYi
        96
    GzhiYi  
       Jun 16, 2023   2
    多写一些,可能存在的问题:
    1. == 符号尽量少用,这会让类型变得模糊难定,尽可能用全等。
    2. channelType 应该使用常量替代,让 2 这个值更具有可读性(这个重要)。

    至于楼上说了那么多的拿三元运算符替换,我觉得是不应该的。强行将逻辑 if else 变更为三元运算符,是个坏主意。

    再看这个是 vue 的 watch ,除开 channelType 不一定为 2 之外,还可能在后续判断 channelType 后做一些其余的在 channelType 变更后的逻辑。

    所以我的看法是,尽管有优化,但写法 if else 没毛病。
    lilei2023
        97
    lilei2023  
    OP
       Jun 16, 2023
    刚才在捋 n 个前辈的代码,还是继续堆山把,跑起来就行,不管那么多了
    fao931013
        98
    fao931013  
       Jun 16, 2023
    可以改 但没有必要
    newmlp
        99
    newmlp  
       Jun 16, 2023   1
    简单易懂
    finab
        100
    finab  
       Jun 16, 2023   7
    菜鸟程序员会这样写
    中等程序员会直接赋值
    经验丰富的程序员会回到这种写法,这样是理解成本最低阅读障碍最小甚至不用思考就能看懂的写法

    这段代码里魔法数字的问题,比这个要严重的多,最应该改的不是 if else 而是这个
    1  2  3  4  
    About     Help     Advertise     Blog     API     FAQ     Solana     3727 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 237ms UTC 04:27 PVG 12:27 LAX 21:27 JFK 00:27
    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