Как писать и обрабатывать функции с несколькими вариантами результата?
Добрый день!
Задача: необходимо сделать несколько проверок нескольких параметров. И в зависимости от результата выполнить соответствующие действия. Возможных результатов проверок скажем N и соответственно N действий.
Сейчас код (функция проверки) на си имеет несколько return result, где return 0 - всё хорошо, return 1..(N-1) - типы провалов проверок. Параметры в функции проверяются поочерёдно (вложенные if-ы) и результат проверки на истине и лжи свои. Проверки умещаются в один if.
Результат функции обрабатывается switch-ем.
Для удобства тип возвращаемого результата функции имеет тип enum, но это не важно.
Но мне этот подход (использование switch и несколько результатов) почему-то не нравится! Наверное потому что привык результат функции либо 0 - всё хорошо, либо !0 - значит плохо.
Внимание вопрос: нормальный ли такой подход обработки результатов функции? Может ли быть другой "красивый" подход к решению этой задачи?
Цель функции поиск меджик байта в буфере, если есть то проверяем первый параметр (длина буфера) и проверяем hash сумму буфера. Еще и длину проверяем на предмет входа в допустимый диапазон.
Проверка результата - сообщаем, что в буфере нет данных (нет мейджик байта), либо длина не валидная, либо hash сумма не совпала, либо всё хорошо!