if (A==null)
{
doA();
}
else if (A!=null)
{
if(B==0)
{
if(A==null)
{
doA();
}
....
}
}
我整个人都是懵逼的……
1
EyreFree 2017-10-18 21:25:10 +08:00 1
多线程条件下,进入 if (A!=null) 分支后在内层的 if(A==null) 执行前 A 变为 null 的话这段代码大概是有意义的吧...
当然我觉得这段代码的作者基本上不会有这样诡异的本意... 2333 |
5
bengxy 2017-10-18 23:04:16 +08:00
估计是忘了注释吧 23333
|
6
NxiJSiOS 2017-10-19 00:03:05 +08:00
代码诡异,就往多线程想吗? 233
|
7
introom 2017-10-19 00:22:07 +08:00 via Android
都 doA 了,else if 再检查一下也是没问题的。不过总体很怪异就是了。
|
8
m939594960 2017-10-19 00:31:13 +08:00 1
估计以前 代码逻辑可能是类似这样的,后来业务变动,删掉了那行吧。。。。
``` if (A==null) { doA(); } else if (A!=null) { if(B==0) { a= fuck() < ---------------------- if(A==null) { doA(); } .... } } ``` |
9
changwei 2017-10-19 05:44:18 +08:00 via Android
我突然发现所有诡异的代码逻辑都可以用多线程来解释了
|
10
sagaxu 2017-10-19 08:12:18 +08:00 via Android
多线程环境下这种代码往往也是错的
|
11
karia 2017-10-19 08:32:09 +08:00
|
12
agostop 2017-10-19 09:02:55 +08:00
估计 8 楼说的差不多
|
13
deadEgg 2017-10-19 09:29:25 +08:00
多线程这依然是竞态环境
不加锁依然赌命? 多线程不合理啊 |
14
EyreFree 2017-10-19 09:36:42 +08:00
我在讲段子啊,你萌为什么都当真...QWQ...
逃... |
15
rbe 2017-10-19 09:42:06 +08:00
@m939594960 这都能分析出来,很强
|
16
domty 2017-10-19 10:45:54 +08:00
这种看起来无比诡异的代码主要就俩原因。
1.写代码的人是个坑 2.这段代码被删删改改了很多次而没有被认真重构过。 |
17
seancheer 2017-10-19 17:58:35 +08:00
多线程这种判断也是不能够保证的。。同意楼上的观点,要么写代码的人坑,要么这段代码被改来改去,改的人没仔细看其他的逻辑。
|
18
GordianZ MOD OP 其实是当天写出来的,而且无关多线程,只是代码烂而已……
明天应该不用来上班了 😂 |