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

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

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

    Imgur

    第 1 条附言  ·  2023-06-16 16:38:57 +08:00
    老哥们啊,要不就此打住吧!看完大家留言,感觉确实不妥!自省!
    310 条回复    2023-06-19 09:19:58 +08:00
    1  2  3  4  
    8355
        101
    8355  
       2023-06-16 11:16:13 +08:00   ❤️ 1
    代码量如果不影响性能而更容易理解肯定更好
    ateist
        102
    ateist  
       2023-06-16 11:16:40 +08:00
    这种代码在 idea 里面可以一键转换成#14 的写法
    hayvane
        103
    hayvane  
       2023-06-16 11:18:41 +08:00   ❤️ 1
    老鸟和菜鸟都可能会这样写,因为会预判这里很大概率会新增类型
    个人感觉没啥大问题,谈不上烂,只是没有注释对 2 的定义是个问题
    Arrowing
        104
    Arrowing  
       2023-06-16 11:19:39 +08:00   ❤️ 1
    说实话我喜欢用三元,但这个也很正常,没啥好笑的,golang 里都没三元可以用。
    XSDo
        105
    XSDo  
       2023-06-16 11:20:20 +08:00   ❤️ 5
    特别讨厌一句代码实现很多功能的,例如 lambda ,写的时候很爽,出 bug 的时候,报个空指针异常,行数就是同一行,很难判断是那个空指针,反正我直接要求尽量不要写 lambda 代码,除非你能确保它永远不报错出 bug ,无论写得是否优雅,编译器都会做编译优化的,在我看来简单易懂最重要。
    henryhu
        106
    henryhu  
       2023-06-16 11:22:04 +08:00   ❤️ 4
    我经常被年轻人喷:用命令行多麻烦,在网上找个图形界面多方便。我都说:对对对,回头我找找。
    AirBai2
        107
    AirBai2  
       2023-06-16 11:22:42 +08:00   ❤️ 1
    其实我想说,这样写挺好的
    wangerka
        108
    wangerka  
       2023-06-16 11:23:39 +08:00   ❤️ 1
    根据这点代码无法推测别人的实际能力,产品经理的水平参差不齐,遇到那种动不动就改需求的产品,谁还愿意费心思去“优雅”
    yoyoluck
        109
    yoyoluck  
       2023-06-16 11:24:15 +08:00   ❤️ 1
    其实我觉得在代码挺好 OP 嘲笑 有没有给出更好的代码
    channelType 应该不只是 2, 阿里的短信服务 /腾讯的短信服务 channelType 值可能不一样
    Mexion
        110
    Mexion  
       2023-06-16 11:25:00 +08:00   ❤️ 1
    op 可能刚上班,这有啥好笑的?
    AlpacaCode
        111
    AlpacaCode  
       2023-06-16 11:26:12 +08:00   ❤️ 1
    如果以后 channelType 的规则又增加了呢
    2n80HF9IV8d05L9v
        112
    2n80HF9IV8d05L9v  
       2023-06-16 11:29:45 +08:00   ❤️ 1
    代码质量只取决于理解起来需要花多长时间.
    wudi77
        113
    wudi77  
       2023-06-16 11:30:45 +08:00   ❤️ 1
    不是很好吗,清清楚楚,方便其他人迅速理解啊。
    chunqiuyiyu
        114
    chunqiuyiyu  
       2023-06-16 11:30:47 +08:00   ❤️ 1
    简单,清晰可扩展,我大声叫好👏
    lakehylia
        115
    lakehylia  
       2023-06-16 11:30:54 +08:00
    2 是啥?给个注释或者把 2 写成枚举吧,不然谁看得懂。。。
    suyuyu
        116
    suyuyu  
       2023-06-16 11:33:21 +08:00
    我没进来就只到评论区会说什么
    hxysnail
        117
    hxysnail  
       2023-06-16 11:34:06 +08:00
    让我比较诧异的是,居然这么多人说挺好的,前辈真多……

    这个事得分开看:

    客观上:前辈要干的事本质就是 #14 楼说,这样写显得有点业余。说句不好听的,就是脱裤子放屁,放个屁需要脱裤子吗?
    主观上:你也不要太较真,他愿意放个屁都拖裤子,那是他的事……你也拦不住不是?
    mohulai
        118
    mohulai  
       2023-06-16 11:34:11 +08:00   ❤️ 2
    我从早晨就看到这帖子了,没看出问题在哪里,心很虚,都没敢说话,刷新了好几次看别人的评论,原来这就是所谓的问题?
    写法的事完全看个人喜好,三元,lambda ,别的乱七八糟语法糖,还是 if else 。我反正是喜欢 if else ,因为调试方便。这也能算笑点的话那是真脑残,没啥好辩的。

    我更想说说写死的 2 ,好多人说这种写法不规范,要如何如何改之类的,确实。但是好多时候代码不是一个人写的,自己想写规范很容易,但处处都是这种 2 的时候,折腾不过来,索性别人怎么写我就怎么将就着用,倒真不是那个人水平有问题。用 2 是一直在屎海中淡定漂流的状态。
    jiahailiang22
        119
    jiahailiang22  
       2023-06-16 11:34:18 +08:00   ❤️ 1
    你在笑什么 ? 能展开说说吗? 说一下你的观点,和笑点
    hu1e
        120
    hu1e  
       2023-06-16 11:35:44 +08:00
    直接设置一个 isSms 的 computed 不就好了吗
    stone520
        121
    stone520  
       2023-06-16 11:39:44 +08:00
    @oatw #51 我感觉应该是,用 computed 更好
    w88975
        122
    w88975  
       2023-06-16 11:41:12 +08:00   ❤️ 1
    你猜它为什么===2 ,你猜以后会不会有===3 ,4 ,5 ,6 的情况?代码看得懂就行了,以前我也追求各种代码技巧,看上去逼格特别高,实际没啥用,除了字数能少点,跟 if else 没什么太大的区别,if else 至少还清晰好理解。老老实实写的代码,方便自己也方便后人
    roycestevie6761
        123
    roycestevie6761  
       2023-06-16 11:41:50 +08:00   ❤️ 1
    这什么语言代码。这语言开发都在卷语法吗,我觉得这种 if else 对不会这门语言语法的也看的明白,挺好的呀
    fan123199
        124
    fan123199  
       2023-06-16 11:42:27 +08:00   ❤️ 1
    你见过 3 个三元运算符组合的情况么,以前我觉得代码精简,lint 通过,完美。现在发现还是 if else 易懂,当时太年轻。
    strive
        125
    strive  
       2023-06-16 11:43:47 +08:00
    还行吧 虽然从 clean code 角度来说,精简比较好;但业务代码更偏重稳定可靠易维护
    messaround
        126
    messaround  
       2023-06-16 11:46:21 +08:00   ❤️ 1
    简单易懂,不费脑子。
    windyboy
        127
    windyboy  
       2023-06-16 11:46:22 +08:00   ❤️ 1
    其实作为公司产品,代码首先是逻辑没有问题,其次是可阅读,可测试
    有一些作为炫技的东西,真的最好别出现在产品里
    liangch
        128
    liangch  
       2023-06-16 11:46:40 +08:00   ❤️ 1
    对于解释器 /编译器来说都一样。
    看上去直观多了。
    boatrain1111
        129
    boatrain1111  
       2023-06-16 11:46:43 +08:00   ❤️ 1
    go 表示这才是正确写法
    buffzty
        130
    buffzty  
       2023-06-16 11:47:13 +08:00
    工业垃圾
    horizon
        131
    horizon  
       2023-06-16 11:47:24 +08:00   ❤️ 1
    别的不说,vue2 是真垃圾
    devfeng
        132
    devfeng  
       2023-06-16 11:48:03 +08:00   ❤️ 1
    如果以前有别的 else 的话我会倾向保留成这样而不是替换成三元运算,git blame 追溯比较方便
    zy0829
        133
    zy0829  
       2023-06-16 11:49:13 +08:00   ❤️ 1
    请问这代码有什么笑点
    lilei2023
        134
    lilei2023  
    OP
       2023-06-16 11:52:20 +08:00   ❤️ 1
    好多人问笑点,那就是:看到我刚写代码的样子
    ma836323493
        135
    ma836323493  
       2023-06-16 11:52:24 +08:00   ❤️ 1
    目测楼主工作经验 1
    yzbythesea
        136
    yzbythesea  
       2023-06-16 11:53:43 +08:00   ❤️ 1
    有问题吗?
    dongtingyue
        137
    dongtingyue  
       2023-06-16 11:58:12 +08:00   ❤️ 2
    no be be ,摆上代码来。
    看了回复也就改 computed ,以及三元替代。没看到改出啥花来。
    shoco
        138
    shoco  
       2023-06-16 11:59:13 +08:00   ❤️ 1
    简单易懂的代码才是好代码,代码只是实现需求的工具,不要在使用工具上花太多时间
    ytll21
        139
    ytll21  
       2023-06-16 11:59:23 +08:00   ❤️ 1
    楼上一大堆说这段代码没问题,可读性强的兄弟们,想过这个问题没有?

    你们觉得的可读性,可能只是因为读的人水平太差了,导致还需要迁就他们?

    就这么一句话就可以的代码,还要写这么多行?

    越多的代码,就代表有更多的可能出错。更好的封装,减少不必要的变量,这才是优秀的代码。
    ccraohng
        140
    ccraohng  
       2023-06-16 12:00:02 +08:00
    无法认同前面赞成前辈的人,纯纯 cg
    hello2090
        141
    hello2090  
       2023-06-16 12:01:06 +08:00
    @iapplebear 三元?
    christin
        142
    christin  
       2023-06-16 12:02:14 +08:00   ❤️ 2
    我还以为多大的问题呢,就是 if else 改成三元啊。
    「你们前端真是太强啦」
    Constellation39
        143
    Constellation39  
       2023-06-16 12:03:03 +08:00   ❤️ 1
    p 主贴一段自己写的呗
    gzf6
        144
    gzf6  
       2023-06-16 12:03:06 +08:00 via Android
    我可能会定义个数组,用 includes 判断,优雅和扩展兼得
    ytll21
        145
    ytll21  
       2023-06-16 12:04:36 +08:00   ❤️ 2
    另外,我一点也不觉得这段代码的可读性在哪里。业务逻辑看的出来吗? ChannelType = 2 凭什么就是 SMS 了呢? 2 是什么意思?

    代码的可读性是指的能体现业务的可读性,不是说代码要写成初学者的代码水平,才叫可读性。那样的话,工作 10 年的和才工作的人区别在哪里?
    janwarlen
        146
    janwarlen  
       2023-06-16 12:06:36 +08:00   ❤️ 1
    代码的理解成本越低,就越好
    并不是越优雅越好

    当然,在满足业务需求性能需求的前提下
    learnshare
        147
    learnshare  
       2023-06-16 12:08:18 +08:00
    >“有一个能跑就行”

    有不少优化空间,但并不值得嘲笑
    iosyyy
        148
    iosyyy  
       2023-06-16 12:19:40 +08:00   ❤️ 1
    @finab #100 经验丰富的程序员会做枚举... 就不会这么判断来做
    mousekiller
        149
    mousekiller  
       2023-06-16 12:39:09 +08:00   ❤️ 1
    能跑就可以
    techmale
        150
    techmale  
       2023-06-16 12:44:14 +08:00
    改写 2 为常量
    Norths
        151
    Norths  
       2023-06-16 12:45:28 +08:00 via Android
    zhuzhibin
        152
    zhuzhibin  
       2023-06-16 12:49:16 +08:00 via iPhone   ❤️ 1
    不能用?
    haha512
        153
    haha512  
       2023-06-16 12:52:40 +08:00   ❤️ 1
    没啥可笑的,不少公司 kpi 就有代码行数一项。再说这个除了行数多一点外,没啥缺点
    xiaofeifei8
        154
    xiaofeifei8  
       2023-06-16 12:52:55 +08:00   ❤️ 1
    嘲笑别人不好,若干年后别人拿你的代码放 v2 上说:“分享一段我司前辈的代码,哈哈!”
    justin2018
        155
    justin2018  
       2023-06-16 12:54:26 +08:00
    刚刚工作的时候 也觉得项目代码不行

    直到自己写的代码 别别人接手 也被说 垃圾

    其实 没啥 能跑通 不报错就行 ~~

    现在接手的一个 N 手项目 都不知道怎么写了 直接复制粘贴 就完事儿 早点下班 回家打游戏多好 😁
    lovedebug
        156
    lovedebug  
       2023-06-16 12:54:54 +08:00   ❤️ 1
    竟然这么多人还觉得简单易懂。。。
    本来一句话简单易懂,还拆成四句,不是搞笑么。。。
    ksco
        157
    ksco  
       2023-06-16 12:57:59 +08:00
    @lovedebug 足以可见大家平时在做的都是些什么样水平的项目,也不奇怪为什么那么多人对编程没有兴趣。
    rockagen
        158
    rockagen  
       2023-06-16 12:58:42 +08:00 via iPhone   ❤️ 1
    年轻人还是要提高自己的姿势水平,不要一天到晚哦搞个大新闻,把别人批判一番,你这个行为啊,毕竟 too young ,上台拿衣服,識得唔識啊
    ljtnine
        159
    ljtnine  
       2023-06-16 13:01:05 +08:00   ❤️ 1
    你笑前辈前端写的菜,前辈 golang 玩的 6
    lilei2023
        160
    lilei2023  
    OP
       2023-06-16 13:01:45 +08:00
    "哈哈" -> 嘲笑,那下次我不用"哈哈",用"呵呵"
    happinessnch
        161
    happinessnch  
       2023-06-16 13:02:06 +08:00
    如果有人提了一个不值得一提的问题,那么这个提问题的人比这个不值得一提的问题,更有问题。
    lilei2023
        162
    lilei2023  
    OP
       2023-06-16 13:03:51 +08:00
    @ljtnine 你还别说,据现在同事说,很有可能是以前写 golang 的一个大哥写的。以前没前端,后端全干
    nightwitch
        163
    nightwitch  
       2023-06-16 13:05:17 +08:00 via Android
    大概率以前有别的分支啊,==1/2/3/4 之类的
    lmmlwen
        164
    lmmlwen  
       2023-06-16 13:08:32 +08:00   ❤️ 1
    笑死 一看就是没接触过大型项目的 耍花活一般是初级程序员的特点
    老鸟最喜欢的就是 if else
    rpish
        165
    rpish  
       2023-06-16 13:12:51 +08:00
    用 constant+ternary 会好很多,代码量,可维护性,可读性都会有提升。
    hussar
        166
    hussar  
       2023-06-16 13:13:00 +08:00
    刚做实习写过这样的代码,被 mentor 打回了。
    应该写一个枚举的 map 定义好这些的常量
    nitmali
        167
    nitmali  
       2023-06-16 13:15:59 +08:00
    类型不可控双等号挺好的
    angrylid
        168
    angrylid  
       2023-06-16 13:17:20 +08:00 via Android   ❤️ 2
    @lilei2023 楼上一片还在说用不用三元都给我看呆了。我觉得你前辈这段代码没有楼上一些人好笑。
    superedlimited
        169
    superedlimited  
       2023-06-16 13:19:15 +08:00   ❤️ 1
    @shyrock 箭头函数是 es6 的基础啊,怎么能用文言文来类比呢?没有箭头函数,难道一个项目里写几万行 var that = this 吗?
    Ayanokouji
        170
    Ayanokouji  
       2023-06-16 13:22:22 +08:00
    不知道有什么好洗的,这代码就是烂
    justfindu
        171
    justfindu  
       2023-06-16 13:22:55 +08:00   ❤️ 1
    这代码看起来都不需要注释, 看起来也没有影响性能, 为啥要笑? 是因为行数短占容量少就更好吗?
    lilei2023
        172
    lilei2023  
    OP
       2023-06-16 13:25:08 +08:00
    @nitmali 一般情况下,我会用强等,但这个参数是有可能从 url 中获取的,一般为省事也是 “==”
    idealhs
        173
    idealhs  
       2023-06-16 13:27:26 +08:00   ❤️ 1
    V2 大众水平底裤掀喽~
    msg7086
        174
    msg7086  
       2023-06-16 13:29:54 +08:00
    我就是来看看有多少人提三元的……
    lilei2023
        175
    lilei2023  
    OP
       2023-06-16 13:30:40 +08:00
    @hussar 羡慕,我入行的时候都没人指导,一通乱写,功能满足就行
    NoOneNoBody
        176
    NoOneNoBody  
       2023-06-16 13:31:14 +08:00
    此帖算不算内卷?
    Asuka0947
        177
    Asuka0947  
       2023-06-16 13:35:17 +08:00   ❤️ 1
    我会直接赋值,但是你就说能不能用吧?
    tiaod
        178
    tiaod  
       2023-06-16 13:36:40 +08:00   ❤️ 1
    1. 代码是写出来是给人看的,附带能在机器上运行
    1016
        179
    1016  
       2023-06-16 13:37:07 +08:00
    @caoguanliyuan #60 他是==又不是===怎么死?
    fancy2020
        180
    fancy2020  
       2023-06-16 13:38:07 +08:00   ❤️ 1
    真心请教,这段代码咋滴了?哈哈的点在哪里,能否解释清楚?
    gitjavascript
        181
    gitjavascript  
       2023-06-16 13:43:27 +08:00
    反正要是我写那个 2 肯定是用变量或者枚举代替
    THESDZ
        182
    THESDZ  
       2023-06-16 13:47:00 +08:00   ❤️ 1
    很明显,这个是业务上,极有可能需要根据 channelType 的不同,在数据层面做更多的变化,而以前的设计可能针对 sms 这种渠道做了非常定制的操作,那么交付压力来了,未来有可能有问题,那怎么办才好呢?

    而且这里的命名真的挺干净的,我喜欢这种
    kuxuan
        183
    kuxuan  
       2023-06-16 13:47:49 +08:00
    懒得研究,多去搞钱啊。
    markzyh
        184
    markzyh  
       2023-06-16 13:48:22 +08:00   ❤️ 1
    以前看别人写的代码也会觉得烂,想改。后来遇到具体业务场景才感觉到,简单易懂的代码就不是烂代码。图上的代码顶多是不够简洁,烂谈不上
    azui999
        185
    azui999  
       2023-06-16 13:52:09 +08:00
    谁看自己以前写的代码谁不想笑啊,不过嘲笑别人就没啥意思了
    potatowish
        186
    potatowish  
       2023-06-16 13:53:18 +08:00 via iPhone   ❤️ 1
    很多源代码都是这么写的,考虑的是方便维护
    zzlit
        187
    zzlit  
       2023-06-16 13:54:31 +08:00
    如果说可以优化的话改成这样(不考虑 computed 的话)? this.isSms = channelType === 2 ,当然也可以把这个 2 列为枚举值,不懂楼上提到的三元。另外有请教一下前辈魔法数字是什么问题?
    wtsamuel
        188
    wtsamuel  
       2023-06-16 13:55:08 +08:00
    如果多个变量,为啥不这样写 channelType === 2 || channelType === 3
    afx
        189
    afx  
       2023-06-16 13:55:26 +08:00
    一句话就能写明白,分太多行反而啰七八嗦,这就是问题。this.isSms = channelType == 2; 就完了,沟通也讲究简单高效。
    zzlit
        190
    zzlit  
       2023-06-16 13:56:10 +08:00
    @zzlit 懂了
    魔法数字,在编程领域指的是莫名其妙出现的数字。数字的意义必须通过详细阅读才能推断出来。
    一般魔法数字都是需要使用枚举变量来替换的。
    paledream
        191
    paledream  
       2023-06-16 13:56:39 +08:00
    @lincanbin #46 腾讯也考核代码行数?
    lovedebug
        192
    lovedebug  
       2023-06-16 13:59:18 +08:00   ❤️ 1
    @ksco 是的
    古话说“一目了然”,这么扩写反而更让人迷惑。
    只能说有些人对代码要求低,更多的追寻各种高大上的设计模式和架构了吧
    cdswyda
        193
    cdswyda  
       2023-06-16 14:01:35 +08:00   ❤️ 1
    没看懂想表达啥
    cbythe434
        194
    cbythe434  
       2023-06-16 14:02:33 +08:00   ❤️ 1
    抵制三元
    抵制 lambda
    抵制闭包
    抵制 perl 遗毒
    define private public 从我做起
    永远支持 php
    najunuoyan
        195
    najunuoyan  
       2023-06-16 14:04:18 +08:00   ❤️ 1
    看了这么多楼,可读性没有一个能明显超过前辈的
    weijancc
        196
    weijancc  
       2023-06-16 14:04:20 +08:00
    这个评论区给我看懵了, 竟然觉得这样没问题
    UxwVI042kEc5pNx6
        197
    UxwVI042kEc5pNx6  
       2023-06-16 14:05:47 +08:00
    安静! PHP 是世界上最好的语言!!!
    wanguorui123
        198
    wanguorui123  
       2023-06-16 14:08:14 +08:00
    代码不行怪路不平
    HAYWAEL
        199
    HAYWAEL  
       2023-06-16 14:08:56 +08:00   ❤️ 1
    更多的可能是里面之前有很长的逻辑,后来需求变了。也懒得处理其他方面,直接返回了
    zimusjw2019
        200
    zimusjw2019  
       2023-06-16 14:12:01 +08:00   ❤️ 1
    程序是给人读的文章, 他只是恰好能运行..
    1  2  3  4  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3617 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 11:08 · PVG 19:08 · LAX 03:08 · JFK 06:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.