Чистота кода C ++

Я работаю в среде C ++ и:
а) Нам запрещено использовать исключения
б) Это код сервера приложения / данных, который оценивает множество запросов различных типов

У меня есть простой класс, инкапсулирующий результат работы сервера, который также используется внутри для множества функций.

class OpResult
{
  .....
  bool succeeded();
  bool failed(); ....
  ... data error/result message ...
};

Поскольку я пытаюсь иметь все функции маленькие и простые, возникает множество подобных блоков:

....
OpResult result = some_(mostly check)function(....);
if (result.failed())
  return result;
...

Вопрос в том, не является ли плохой практикой делать макрос таким образом и использовать его везде?

#define RETURN_IF_FAILED(call) \
  {                            \
    OpResult result = call;    \
    if (result.failed())       \
      return result;           \
  }

Я понимаю, что кто-то может назвать это неприятным, но есть ли лучший способ? Какой другой способ обработки результатов и избежания лишнего кода вы бы предложили?

10
задан mleko 25 May 2014 в 06:56
поделиться