OOLAOO
V2EX  ›  问与答

你们喜欢以下那种 return 方式

  •  
  •   OOLAOO · Jul 15, 2022 · 3968 views
    This topic created in 1572 days ago, the information mentioned may be changed or developed.

    第一种

    if(xxx){
      return xxxx;
    }else{
      return xxxx;
    }
    

    第二种

     xxx response;
    if(xxx){
    	response = xxxx;
    }
    else{
    	response = xxxx;
    }
    return response
    
    33 replies  •  2022-07-16 17:05:58 +08:00
    TWorldIsNButThis
    TWorldIsNButThis
    Jul 15, 2022 via iPhone
    1
    我现在更喜欢三目或者 1
    有对称的美感
    zhlxsh
    zhlxsh
    Jul 15, 2022 via iPhone
    2
    我觉得没啥区别呀,习惯上的话第一种,少起一个变量名。
    DonaidTrump
    DonaidTrump
    Jul 15, 2022
    3
    第二种
    v23x
    v23x
    Jul 15, 2022
    4
    混着用

    看情况把
    dem0ns
    dem0ns
    Jul 15, 2022
    5
    保险起见 if 里外都用 return
    secsilm
    secsilm
    Jul 15, 2022 via Android
    6
    按照早返回的话第一种,但是如果逻辑真的这么简单的话就看心情吧。逻辑复杂就最好第一种,对读代码的人有帮助。
    netnr
    netnr
    Jul 15, 2022 via Android❤️3
    7
    var res = 0;
    if(xxx){
    res = 1;
    }
    return res;
    golangLover
    golangLover
    Jul 15, 2022 via Android❤️1
    8
    没有 else
    jtacm
    jtacm
    Jul 15, 2022❤️2
    9
    第二种。
    原因:你的代码不只是你在维护,其他人也会来维护。为了避免后人在中途各种 return ,制造各种 surprise ,破坏代码可读性,建议用第二种,建立规范,最后返回。
    aptupdate
    aptupdate
    Jul 15, 2022 via iPhone
    10
    一般简单的用第一种,如果有稍微复杂的逻辑会用第二种。
    IvanLi127
    IvanLi127
    Jul 15, 2022 via Android
    11
    if(xxx){
    return xxxx;
    }
    return xxxx;
    }
    IvanLi127
    IvanLi127
    Jul 15, 2022 via Android
    12
    if(xxx){
    return xxxx;
    }
    return xxxx;


    我一般这种。
    手机操作,前面不小心点到回复按钮发出去了。
    csh1617487191
    csh1617487191
    Jul 15, 2022
    13
    if(xxx) return xxxx;
    return xxxx;
    mxT52CRuqR6o5
    mxT52CRuqR6o5
    Jul 15, 2022 via Android
    14
    第一种,减少副作用逻辑降低心智负担
    Building
    Building
    Jul 15, 2022 via iPhone
    15
    二元的话比较喜欢 return a ? { return b }() : { return c }()
    说的就是 go 这种二元表达式都不提供的语言
    fkmc
    fkmc
    Jul 15, 2022 via iPhone
    16
    第一种
    dqzcwxb
    dqzcwxb
    Jul 15, 2022
    17
    简单的第一种,复杂或者需要扩展维护的第二种
    tcp
    tcp
    Jul 15, 2022 via Android
    18
    复杂情况下,如果第 2 种 if else 之后还有运算,可能会出错,第 1 种及时 return ,避免后续潜伏 bug 。多个选择分支情况下尤其可能出问题。
    myxingkong
    myxingkong
    Jul 15, 2022
    19
    能用三目的话用三目,不能的话看函数复杂度,不复杂 1 ,复杂 2 。
    Jooooooooo
    Jooooooooo
    Jul 15, 2022
    20
    第一种的尴尬之处是, return 的地方是死的, 一旦后续想改动很麻烦.

    经验告诉我第二种更好.
    Cabana
    Cabana
    Jul 16, 2022
    21
    喜欢这样🐶 return if(xxx) xxx else xxx
    PMR
    PMR
    Jul 16, 2022 via Android
    22
    if(xxx){
    aaa()
    }else{
    bbb()
    }

    aaa() {
    return xxx;
    }
    bbb() {
    return xxx;
    }

    :doge:
    andyJado
    andyJado
    Jul 16, 2022
    24
    现在 cpu 都有分支预测, 第一种预测失败导致的回滚应该会更严重一些.

    所以, 能用 guard 用 guard, 能 pattern match 就 match, 不写 if eles 之后代码读起来舒服多了..

    https://gitpress.io/u/1799/hardware_zh
    FYFX
    FYFX
    Jul 16, 2022
    25
    我一般优先第一种,不过在有 return 的情况下没必要写 else
    icyalala
    icyalala
    Jul 16, 2022❤️1
    26
    主要看上下文风格。如果是第一种,我更倾向:
    if (xxx) return xxxx;
    if (yyy) return yyyy;

    @andyJado 要相信编译器,这种开编译优化后一般没什么区别。
    chenyu8674
    chenyu8674
    Jul 16, 2022
    27
    return x ? y : z;

    [doge]
    rockddd
    rockddd
    Jul 16, 2022
    28
    想起来哪种用哪种
    gongquanlin
    gongquanlin
    Jul 16, 2022
    29
    if(xxx){
    return xxx;
    }

    if(!xxx){
    return yyy;
    }

    习惯不用 else ,感觉 else 看起来别扭

    最主要的原因还是见识过公司领导的超级无敌大 if...else...里面还嵌套着 n 个 if else ,相同功能代码在 if 和 else 里来回复制,实在是恶心够了,见着 else 就难受。除非特殊情况不会用。。
    lslqtz
    lslqtz
    Jul 16, 2022
    30
    res = xxx;
    if (a) {
    res = yyy;
    }
    return yes;
    ligiggy
    ligiggy
    Jul 16, 2022
    31
    第二种叫单出原则,受到很多老程序员的推崇,尤其是 c/c++,但是越来越多的书已经不强求第二种实现了,视具体情况而定。建议 OP 多看点代码优化的书。

    多说一句,很多人都不推崇 goto ,或者类似的写法,我也不喜欢, 但是很多编程语言的源码里,有挺多 goto 的,所以,视具体情况而定吧。
    ligiggy
    ligiggy
    Jul 16, 2022
    32
    另外,还有很多人喜欢
    if()
    {
    }
    不喜欢
    if(){
    }

    你可以有喜欢的代码方式,但是成熟的开发者,都需要习惯两种写法。
    MrVito
    MrVito
    Jul 16, 2022
    33
    @ligiggy 不同的风格用各种 lint 工具来规范就好了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4164 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 100ms · UTC 05:39 · PVG 13:39 · LAX 21:39 · JFK 00:39
    ♥ Do have faith in what you're doing.