• 请不要在回答技术问题时复制粘贴 AI 生成的内容
lilei2023
V2EX  ›  程序员

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

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

    这个事得分开看:

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

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

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

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

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

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

    当然,在满足业务需求性能需求的前提下
    learnshare
        147
    learnshare  
       Jun 16, 2023
    >“有一个能跑就行”

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

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

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

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

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