Это простой вопрос 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.Поэтому, пожалуйста, помогите мне найти выход!