V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
lilei2023
V2EX  ›  程序员

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

  •  
  •   lilei2023 · 2023-06-16 10:09:05 +08:00 · 29814 次点击
    这是一个创建于 543 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Imgur

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    这段代码里魔法数字的问题,比这个要严重的多,最应该改的不是 if else 而是这个
    1  2  3  4  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2966 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 12:30 · PVG 20:30 · LAX 04:30 · JFK 07:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.