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

2019-02-26 14:04:56 +08:00
 wleexi
boolean foo() {
	boolean rseultA = funca();
    boolean resultB = funcB();
    boolean resultC = funcC();
    
    return !rseultA && !resultB && !resultC;

}

最后的 return 有更好的做法吗

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

return true;
}
```
wleexi
2019-02-26 19:35:59 +08:00
@wutiantong 恩你说的是。我现在说不好也就是我感觉上不太好,但是具体哪里欠妥你让我说个一二三我未必说的出来。刚开始重视代码风格这块东西,自己的能力和书上的概念不一定能很好的契合吧,感谢你
bakabie
2019-02-26 20:26:17 +08:00
1l 正解,不过有时候并不需要过于纠结 if 多少的问题,有时候 if 虽然多点,但是还是能直观表达代码的。。
lululau
2019-02-26 20:42:17 +08:00
return all_falsy(resultA, resultB, ...)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/538859

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX