我似乎经常在我的代码和其他代码中看到这一点。似乎没有什么比这更糟糕的了,但是它看起来可以做得更好,这让我很烦。我猜想一个case语句可能更有意义,但是变量通常不是一个很好的类型,或者根本不能与case语句一起使用(取决于语言)
If variable == A
if (Flag == true)
doFooA()
else
doFooA2
else if variable == B
if (Flag == true)
doFooB()
else
doFooB2
else if variable == C
if (Flag == true)
doFooC()
else
doFooC2
似乎有多种方法可以“分解”,例如2套if-elses,其中一组在Flag == true时处理。
是否有“好方法”将其分解,或者如果这种if-else算法发生,通常意味着您做错了什么?
6
是否可以将Flag变量传递给可以处理标志本身的doFooX?
—
让-弗朗索瓦的Côté
当然可以,但是您只有一个方法doFooX,该方法将评估标志是否为true,然后执行doFooX1或doFooX2
—
TruthOf42 2013年
恕我直言,它仍然会更清晰地阅读。然后,它依靠什么doFooA和doFooA2做...
—
让-弗朗索瓦的Côté
为什么写
—
Keith Thompson
if (Flag == true)
而不是仅仅写If (Flag)
?如果您认为If (Flag == true)
更好,为什么不if ((Flag == true) == true)
呢?
从以下大多数答案中得出的最重要的结论是,就逻辑流程和代码的未来维护而言,简单性和易读性比巧妙的技巧更为重要。
—
Patrick Hughes 2013年