Я нашел фрагмент кода в Интернете, который имеет очень простую цель, но он использует уродливый подход. Предположительно, автор использует случай переключения, чтобы определить, принадлежат ли некоторые (несмежные) значения ранее определенного Enum в своей области. Если это так, функция возвращает true
и все. Else, он возвращает false
.Избегайте повторения и простого случая переключения в C/C++?
Это практически выглядит следующим образом:
switch(value) {
case ONE:
case TWO:
/* many similar lines later */
case TWENTY:
case TWENTY_FIVE:
/* an afternoon later */
case ONE_HUNDRED:
return true;
default:
return false;
}
Их использование случае выключателя оправдано с наличием мгновенного подстановок благодаря таблице переходов, генерируемого компилятором (даже если таблица скачка не обязательно означает, мгновенный поиск из того, что я собрал). Тем не менее, это порождает бесчисленные ненужные строки кода.
Я читал о функции вложения и использовании массива указателей функций, но я не знаю, как использовать это в таком конкретном случае.
Как избежать написания множества строк case X:
с таким простым случаем (без каламбура), как это?
Полностью длинный оператор 'switch' и/или' if' обычно является признаком плохого использования OOP – hgiesel
@henrikgiesel, откуда появился ООП? – SergeyA
В чем ваш вопрос? Я не понимаю. –