• 请不要在回答技术问题时复制粘贴 AI 生成的内容
GordianZ
V2EX  ›  程序员

今天看到了这样一段代码,跟大家分享一下

  •  
  •   GordianZ · Oct 18, 2017 · 6088 views
    This topic created in 3310 days ago, the information mentioned may be changed or developed.
    if (A==null)
    {
        doA();
    }
    else if (A!=null)
    {
        if(B==0)
        {
            if(A==null)
            {
                doA();
            }
    ....
        }
    }
    

    我整个人都是懵逼的……

    18 replies  •  2017-10-19 20:15:08 +08:00
    EyreFree
    EyreFree
    Oct 18, 2017❤️1
    1
    多线程条件下,进入 if (A!=null) 分支后在内层的 if(A==null) 执行前 A 变为 null 的话这段代码大概是有意义的吧...

    当然我觉得这段代码的作者基本上不会有这样诡异的本意...

    2333
    asd567800
    asd567800
    Oct 18, 2017
    2
    @EyreFree 对的,不过应该加锁啊
    beginor
    beginor
    Oct 18, 2017 via Android
    3
    @EyreFree 这解释真高明!
    SoulSleep
    SoulSleep
    Oct 18, 2017
    4
    @EyreFree 你这个想法又涉及到线程安全问题.......显然能写出这种代码的人也应该想不到有这种情况(⊙o⊙)…
    bengxy
    bengxy
    Oct 18, 2017
    5
    估计是忘了注释吧 23333
    NxiJSiOS
    NxiJSiOS
    Oct 19, 2017
    6
    代码诡异,就往多线程想吗? 233
    introom
    introom
    Oct 19, 2017 via Android
    7
    都 doA 了,else if 再检查一下也是没问题的。不过总体很怪异就是了。
    m939594960
    m939594960
    Oct 19, 2017❤️1
    8
    估计以前 代码逻辑可能是类似这样的,后来业务变动,删掉了那行吧。。。。
    ```
    if (A==null)
    {
    doA();
    }
    else if (A!=null)
    {
    if(B==0)
    {
    a= fuck() < ----------------------
    if(A==null)
    {
    doA();
    }
    ....
    }
    }
    ```
    changwei
    changwei
    Oct 19, 2017 via Android
    9
    我突然发现所有诡异的代码逻辑都可以用多线程来解释了
    sagaxu
    sagaxu
    Oct 19, 2017 via Android
    10
    多线程环境下这种代码往往也是错的
    agostop
    agostop
    Oct 19, 2017
    12
    估计 8 楼说的差不多
    deadEgg
    deadEgg
    Oct 19, 2017
    13
    多线程这依然是竞态环境

    不加锁依然赌命?

    多线程不合理啊
    EyreFree
    EyreFree
    Oct 19, 2017
    14
    我在讲段子啊,你萌为什么都当真...QWQ...

    逃...
    rbe
    rbe
    Oct 19, 2017
    15
    @m939594960 这都能分析出来,很强
    domty
    domty
    Oct 19, 2017
    16
    这种看起来无比诡异的代码主要就俩原因。
    1.写代码的人是个坑
    2.这段代码被删删改改了很多次而没有被认真重构过。
    seancheer
    seancheer
    Oct 19, 2017
    17
    多线程这种判断也是不能够保证的。。同意楼上的观点,要么写代码的人坑,要么这段代码被改来改去,改的人没仔细看其他的逻辑。
    GordianZ
    GordianZ
    OP
    Oct 19, 2017
    18
    其实是当天写出来的,而且无关多线程,只是代码烂而已……
    明天应该不用来上班了 😂
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   986 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 22:24 · PVG 06:24 · LAX 14:24 · JFK 17:24
    ♥ Do have faith in what you're doing.