大量if else 大家怎么优化的呢

没那么复杂
别急着想破绽
if都判定失败就剩下else拉

你这种需求可以反向,先判断条件多的
if (res & 0x10101) {
} else if (res & 0x00101) {
} else if (res & 0x00001) {
}
但是这样感觉与楼主的意思违背。本身楼主就是因为影响代码阅读才想做优化,这样改的话,代码阅读更困难了

我见过一种写法,有点扯,不知道楼主看不看得上:
switch (true) {
case 条件1 && 条件3 && 条件5:
break;
case 条件3 && 条件5:
break;
case 条件2 && 条件1:
break;

}
跟if else意思差不多,但是也要注意规划好

甚至这里还可以有这样的设计:
case 条件1:
条件1额外操作
case 条件3:
条件1和条件3共同操作
break;

QQ图片20210902110349

我只是举例说楼上的问题

《设计模式》这本书没看过嘛?

以前我老板看我写代码, 问我怎么没有那么多括号, 缩进, 感觉我写代码很low。

eventtiggers = this.addEvent(eventtiggers, e<= 0); //16
eventtiggers = this.addEvent(eventtiggers, !d); //8
eventtiggers = this.addEvent(eventtiggers, c); //4
eventtiggers = this.addEvent(eventtiggers, b); //2
eventtiggers = this.addEvent(eventtiggers, a > 0); //1
排好就不會難看

addEvent(event, boolean) {
event = event << 1;
if (boolean) event += 1
return event;
}

if(a>0 && b) 就是3
if(a>0 && c) 就是5 不會重複
用enum來命名結果

1赞

这个是使用异或运算 & | 很好用 box2d 里区别可不可碰撞 也用的这个方法

我说的不是排版,主要是为了阅读,为什么这里要等于2、等于3的时候才进,得不停的去对照。最后应该也是跟楼上这种方法结合起来吧?用枚举来释义让别人更好看懂,确实是个好方法

1赞