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

·方法返回值为多个 bool 值做&& 有简化方法嘛

  •  
  •   wleexi · 325 天前 · 1849 次点击
    这是一个创建于 325 天前的主题,其中的信息可能已经有所发展或是发生改变。
    boolean foo() {
    	boolean rseultA = funca();
        boolean resultB = funcB();
        boolean resultC = funcC();
        
        return !rseultA && !resultB && !resultC;
    
    }
    

    最后的 return 有更好的做法吗

    20 回复  |  直到 2019-02-26 20:42:17 +08:00
    ChoateYao
        1
    ChoateYao   325 天前
    return !(funca() || funcb() || funcc())
    cxl008
        2
    cxl008   325 天前
    8421 ... 4 个值 你还可以再加一个返回。。用一个 byte
    wleexi
        3
    wleexi   325 天前
    @ChoateYao 额这个是我没写全。 完整的时候是
    boolean rseultA = funca();
    if (resultA) {
    log.info(XXXX)
    }
    EscYezi
        4
    EscYezi   325 天前 via iPhone
    一楼正解
    wutiantong
        5
    wutiantong   325 天前
    果然前几天那个《代码 if 嵌套过多,怎么优化比较好》也是你问的。看得我真是莫名其妙啊。
    wleexi
        6
    wleexi   325 天前
    @wutiantong 是我问的。最近学习中 很多疑问还望大佬多指点
    TimFire
        7
    TimFire   325 天前
    我有强迫症。。。rseultA....
    CodeCore
        8
    CodeCore   325 天前   ♥ 1
    就这样挺好的. 简单易懂. 不要搞那么复杂难懂.
    mrgeneral
        9
    mrgeneral   325 天前
    reduce 就好了
    geelaw
        10
    geelaw   325 天前 via iPhone
    @ChoateYao #1 短路会改变业务逻辑
    wutiantong
        11
    wutiantong   325 天前
    @wleexi 可能是我太菜,我看不懂你想问什么,比如说,原来的做法哪里不好呢?
    hitmanx
        12
    hitmanx   325 天前
    @wleexi 除了简化还要考虑 debug 的便利性,尤其是设断点的可能性。像 1L 这样的,哪怕不涉及到短路影响业务逻辑,对于 debug 的友好型也是远远不如你目前这种写法:
    boolean rseultA = funca();
    if (resultA) {
    log.info(XXXX)
    }
    ChoateYao
        13
    ChoateYao   325 天前
    @geelaw 是的,但是他只给这么一段代码,要我们回答者自己去猜,我们没有这么多精力吧。
    liuxingbaoyu
        14
    liuxingbaoyu   325 天前
    我都是
    bool a=func1();
    a=a&&func2();
    a=a&&func3();
    liuxingbaoyu
        15
    liuxingbaoyu   325 天前
    @liuxingbaoyu
    改成
    a=func2() && a;
    吧...
    刚才搞错了...
    frienmo
        16
    frienmo   325 天前
    写 Java,就写得简单点,易读最重要,毕竟是工业化产品,会有很多比你水平低的人接手代码的。
    GuuJiang
        17
    GuuJiang   325 天前
    能否接受短路,如果能接受的话就很简单
    ```
    boolean foo() {
    if (funcA()) {
    return false;
    }
    if (funcB()) {
    return false;
    }
    if (funcC()) {
    return false;
    }

    return true;
    }
    ```
    wleexi
        18
    wleexi   325 天前
    @wutiantong 恩你说的是。我现在说不好也就是我感觉上不太好,但是具体哪里欠妥你让我说个一二三我未必说的出来。刚开始重视代码风格这块东西,自己的能力和书上的概念不一定能很好的契合吧,感谢你
    bakabie
        19
    bakabie   325 天前   ♥ 1
    1l 正解,不过有时候并不需要过于纠结 if 多少的问题,有时候 if 虽然多点,但是还是能直观表达代码的。。
    lululau
        20
    lululau   325 天前 via iPhone   ♥ 1
    return all_falsy(resultA, resultB, ...)
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1237 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 75ms · UTC 18:36 · PVG 02:36 · LAX 10:36 · JFK 13:36
    ♥ Do have faith in what you're doing.