
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 多线程条件下,进入 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 估计以前 代码逻辑可能是类似这样的,后来业务变动,删掉了那行吧。。。。 ``` 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 OP 其实是当天写出来的,而且无关多线程,只是代码烂而已…… 明天应该不用来上班了 |