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

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

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

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