Я работаю в среде 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; \
}
Я понимаю, что кто-то может назвать это неприятным, но есть ли лучший способ? Какой другой способ обработки результатов и избежания лишнего кода вы бы предложили?