来请教大家,这种算冗余代码吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
joooker
V2EX    程序员

来请教大家,这种算冗余代码吗?

  •  
  •   joooker 2020-06-23 11:15:32 +08:00 6075 次点击
    这是一个创建于 1948 天前的主题,其中的信息可能已经有所发展或是发生改变。
    <template> <div> <button @click="tryAgain">点击重试</button> </div> </template> <script> export default { data() { return {}; }, mounted() { this.unsubscribe(); }, methods: { unsubscribe() { // do something }, tryAgain() { this.unsubscribe(); }, }, }; </script> 

    类似这么一段 Vue 代码,给同事 review 代码时候我指出tryAgain可以删掉,但他认为很直观没问题。

    我觉得只是单纯再包一层函数直观但没啥意义,更倾向删掉。

    39 条回复    2020-06-24 08:59:41 +08:00
    12tall
        1
    12tall  
       2020-06-23 11:21:53 +08:00
    个人倾向于删掉,后面有需求可以再加上(doge
    chaos1019
        2
    chaos1019  
       2020-06-23 11:22:41 +08:00
    我觉得不算
    oliverchen
        3
    oliverchen  
       2020-06-23 11:44:29 +08:00   2
    很直观没问题。
    “很直观”就是个意义。
    dumbass
        4
    dumbass  
       2020-06-23 11:53:01 +08:00
    如果按钮还要做`unsubscribe()`之外的操作,或许就不冗余了
    mikoshu
        5
    mikoshu  
       2020-06-23 11:53:31 +08:00
    看习惯吧 我个人是会删的...减少代码量哈哈哈
    axeprpr1
        6
    axeprpr1  
       2020-06-23 11:55:13 +08:00
    6
    xiaoming1992
        7
    xiaoming1992  
       2020-06-23 12:10:57 +08:00 via Android
    这样子语义更明晰吧
    wxsm
        8
    wxsm  
       2020-06-23 12:17:00 +08:00
    这叫直观?惊了。

    <button @click="unsubscribe">点击重试</button>
    这才叫直观好吧!
    bQ3u9RAQt4125PUK
        9
    bQ3u9RAQt4125PUK  
       2020-06-23 12:21:04 +08:00   4
    直观是啥意思?
    看不懂 HTML 里面的那四个“点击重试”四个大字非得用一个 function 名来把它翻译一下么?
    你们团队里有外国人?
    pinkSlime
        10
    pinkSlime  
       2020-06-23 12:48:37 +08:00
    我感觉吧 这种有别人强烈自我风格表达意愿的代码
    如果不是违反你们公司的规范的话 还是不要提的好
    回字的四种写法 没有绝对的是非对错
    而在你的队友看来 你是在否定他的审美
    就好比: 你怎么穿这双鞋 奇丑无比
    没有实质收益还挺容易得罪人 何苦来着
    xingyue
        11
    xingyue  
       2020-06-23 12:53:36 +08:00
    @zackwan95 #9 本来还挺纠结的,被老哥一语点醒,抱拳.jpg

    ps: 如果真要表达“直观”这一层,似乎要这样写:
    <button @click="handleBtnClick('点击重试')">点击重试</button>
    handleBtnClick(type,...args){
    switch(type){
    case '点击重试':
    this.unsubscribe();
    break;
    }
    }

    tryAgain 和 unsubscribe 的语义在同一层,都告诉你具体干什么;而 handleBtnClick 就语义很“直观”,我负责处理点击事件,具体干什么请去函数内找,与前两者不在同一层~
    zjsxwc
        12
    zjsxwc  
       2020-06-23 13:11:59 +08:00
    我倾向于套个娃
    ChanKc
        13
    ChanKc  
       2020-06-23 13:17:53 +08:00 via Android
    倾向于不删
    zhuweiyou
        14
    zhuweiyou  
       2020-06-23 13:27:01 +08:00
    看情况,如果 tryAgain 还要做别的事情,那就有意义。
    bnm965321
        15
    bnm965321  
       2020-06-23 13:41:12 +08:00
    unsubscribe 之后不应该重新 subscribe 吗
    mmlovely
        16
    mmlovely  
       2020-06-23 13:43:49 +08:00
    见仁见智,个人认为没什么问题
    yiyi11
        17
    yiyi11  
       2020-06-23 13:45:01 +08:00 via Android
    但问题是,冗余≠多余,冗余设计为了维护扩展,那是可行的。
    如果真要较真,应该举证,根据业务需求的复杂度,认为绝大部分情况不需要在 tryAgain 中写额外逻辑,即 undescribe 的逻辑足够简单且能表达整个操作的意思,那就不需要该冗余。
    yiyi11
        18
    yiyi11  
       2020-06-23 13:45:54 +08:00 via Android
    上面写错了,是 unsubscribe
    lcs1998
        19
    lcs1998  
       2020-06-23 14:06:24 +08:00
    这个还得看你们之后是不是要在这上面拓展功能了
    Mutoo
        20
    Mutoo  
       2020-06-23 14:29:08 +08:00
    这不只是冗余,还是脱裤子放屁。
    UIXX
        21
    UIXX  
       2020-06-23 14:33:46 +08:00   1
    这是代码风格的问题,只要该程序员写的代码风格一致即可。
    no1xsyzy
        22
    no1xsyzy  
       2020-06-23 14:37:11 +08:00
    @xingyue #11 你这也不对,“我符合处理点击事件” 是 @click 表达的语义。
    我觉得这里的问题是这个组件只用于 unsubscribe ?
    难道不应该外层把 unsubscribe 函数和 “点击重试” 字符串作为 props 传进去吗?
    sonice
        23
    sonice  
       2020-06-23 15:17:44 +08:00
    点击重试和 unsubscribe 有逻辑关系吗?
    如果根据上下文工作流程已经很确定了,重试就一定是 unsubscribe,那去掉没毛病。
    还有其他人有提到的业务扩展的问题。

    review 代码不都是走过场吗?只要功能保证,没有明显的逻辑错误就行,你这样搞是会没“朋友”的
    swirling
        24
    swirling  
       2020-06-23 15:58:42 +08:00
    Verbosity is not a bad thing.
    atwoodSoInterest
        25
    atwoodSoInterest  
       2020-06-23 16:02:11 +08:00
    不冗余
    按钮的显示是“点击重试”,但是实际执行的方法是 unsubscribe,意义其实是不对等的。
    这个调用的意义就在于说明,重试的内容是取消订阅。
    yinjunjian0
        26
    yinjunjian0  
       2020-06-23 16:49:32 +08:00

    按钮的方法名是 tryAgain,看方法名实质不知道重试什么
    换成 unsubscribe 语义更明确
    asLw0P981N0M0TCC
        27
    asLw0P981N0M0TCC  
       2020-06-23 17:20:20 +08:00
    万一 tryagin 里后期还要加别的操作呢 不只是 unsubscribe 呢
    Lanayaaa
        28
    Lanayaaa  
       2020-06-23 17:36:50 +08:00   1
    如果明天 PM 就给你提个需求让在 tryagain 里多一个操作, 就有意义了。
    简单的说就是赌博。 老梗了。
    cassyfar
        29
    cassyfar  
       2020-06-23 17:44:55 +08:00
    不冗余。unsub 只是 try again 点下去后发生的一步。
    tutou
        30
    tutou  
       2020-06-23 17:48:01 +08:00
    不想删,因为不知道什么时候产品加奇怪的需求
    djs
        31
    djs  
       2020-06-23 18:11:00 +08:00
    没问题吧,加入你这个 tryagain 又要加一堆奇怪的东西,就有用了,逻辑上也分离了
    djs
        32
    djs  
       2020-06-23 18:11:32 +08:00
    听听你同事咋说,如果只是直观,我是觉得删了吧
    GzhiYi
        33
    GzhiYi  
       2020-06-23 18:19:17 +08:00
    是我没法留下来,心里不爽。所以我选删。
    ipwx
        34
    ipwx  
       2020-06-23 18:33:28 +08:00
    tryAgain => handleBtnTryAgain

    我打赌这么重命名楼上的绝对会一致赞同。
    ipwx
        35
    ipwx  
       2020-06-23 18:35:00 +08:00
    或者 tryAgain => onBtnTryAgainClick

    本质上楼主的同事可能觉得 tryAgain 指的就是 tryagain 这个按钮,和 unsubscribe 不在同一层。但是楼主认为 tryAgain 语义上和 unsubscribe 在同一层。这么一种解读差别,所以带来了不同的判断。
    sugars
        36
    sugars  
    PRO
       2020-06-23 18:58:20 +08:00 via iPhone
    支持语义化,我也这么写
    未来点击按钮要加 loading 什么的就方便了,要想周到长远
    lewinlan
        37
    lewinlan  
       2020-06-23 19:08:29 +08:00 via Android
    我认为冗余。
    代码少的时候看起来好像容易拓展,等代码多了层数多了就变得难以追踪。有好有坏所以优先简洁。
    不过这点小事也没必要较真……
    ShareManT
        38
    ShareManT  
       2020-06-23 21:09:36 +08:00
    没用的代码就得删除
    IvanLi127
        39
    IvanLi127  
       2020-06-24 08:59:41 +08:00 via Android
    取决于你们写不写注释咯,不写的话保留这个方法还是有必要的 emmm
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3980 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by soltude
    VERSION: 3.9.8.5 61ms UTC 10:13 PVG 18:13 LAX 03:13 JFK 06:13
    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