【发布时间】:2011-11-07 19:41:09
【问题描述】:
这是一个简单的控制流 GOTO 问题,与资源分配无关。
检查一条数据是否“好”有两个级别。如果且仅当它通过第一次检查,我们进行第二次检查。如果数据未通过任一测试,我们将使用默认值。
第二次检查涉及到中间数据的几个步骤,所以我们不能把它放在短路的|| 条件下。此外,如果第二个测试通过,我们将使用第二个测试的输出而不是原始数据。
这是实时处理情况下的内循环,因此效率非常重要。我们不想多次进行任何计算。
if (firstCheck(data)) {
result = analyze(data);
if (secondCheck(result)) {
use_result(result);
}
else {
goto FAIL;
}
}
else {
FAIL:
use_result(DEFAULT_VALUE);
}
这个 GOTO 似乎以最大的效率满足了我的所有要求。我可以想到一些其他的方法来做到这一点,但所有这些都将涉及额外的存储或条件。不过,我对 GOTO 持谨慎态度。事实上,如果我使用它,这将是我第一次使用 GOTO。所以,请帮我找出路!
【问题讨论】:
标签: optimization coding-style conditional goto control-flow