https://paste.ee/p/ONmzA
3: https://paste.ee/p/FBRCM
Вся соль последовательном вызове метода _send_cmd_with_r1 несколько раз и проверке результата. Во всех трёх методах _send_cmd_with_r1 возвращает tl::expected.
Вопрос: какой из вариантов лучше/читабельнее/моднее?
tl::expected я добавил специально, чтобы сделать цепочку вызовов, вместо Си-шных последовательных вызовов/проверок результата (aka Вар 2), но в итоге получилось как будто-то бы не очень читабельно (вар. 1). Вар. 2, 3 больше Си-style, но в целом более читабельнее, как мне кажется. Или я просто привык?
Все три какой то щит
Я бы выбрал третий. Ну и если 1) компилятор поддерживает корутины 2) и это не msvc (На сколько я знаю, их реализация не нарушала стандарт, просто эта библиотека использовала особенности реализации clang'а. С другой стороны, я так же читал, что майкрософт собирался изменить свою реализацию так, чтобы оно работало и у них.) можно получить почти хороший синтаксис: auto x = co_await f1(); auto y = co_await f2(x); auto z = co_await f3(x, y); https://github.com/toby-allsopp/coroutine_monad
Обсуждают сегодня