编写如下算法的最佳方法是什么:
if (a) {
doA();
done();
}
else if (b) {
doB();
done();
}
else if (c) {
doC();
done();
}
我想到的另一种方法:
done = true;
if (a) {
doA();
}
else if (b) {
doB();
}
else if (c) {
doC();
}
else {
done = false;
}
if (done) {
done();
}
哪个更好?还有其他最佳方法吗?
最佳答案
在没有任何上下文的情况下,对我来说最自然的方式是:
bool do_it(int condition)
{
switch (condition)
{
case a: doA(); return true;
case b: doB(); return true;
case c: doC(); return true;
default: return false;
}
}
// ...
if (do_it) done();
因为它抽象了“如果这一切都成功了,那么就调用done()
”的逻辑。
但是还有许多其他方法可以做到这一点。特别是,如果 future 条件的数量可能会增加,我根本不会这样做。
关于algorithm - 实现此算法的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5567235/