LINUX.ORG.RU

Ответ на: комментарий от drBatty

Тут у человека конструкция

if (obj.error) return -1; явно лишняя. Можно передать управление нелокально. Но если супирь-пупирь производительность нужна, тогда может быть.

onanij
()
Ответ на: комментарий от Dantix

Вообще желательно написать workflow так, чтобы это избежать. Но если хочется, то почему бы и нет? Главное, чтобы читаемость сильно не страдала.

Я предпочитаю наоборот делать по возможности return на верхнем уровне, чтобы избежать увеличения уровня вложенности кода. Например:

void foo()
{
    if(someCondition) {
        ...
        return;
    }

    ...
}
И код понятен, и перенос части выражения на другую строку нужно делать реже.

m0rph ★★★★★
()
Ответ на: комментарий от invy

достаточно матюкнуться в отладочный поток

anonymous
()
Ответ на: комментарий от onanij

if (obj.error) return -1; явно лишняя. Можно передать управление нелокально. Но если супирь-пупирь производительность нужна, тогда может быть.

дело не в производительности, а в читаемости. Если функция не должна ничего делать, она должна ничего не делать (просто return). А вот прыгать куда-то в конец — это костыль и не нужно. Разве что для быдлокодеров, у которых 100% кода работает только после пошаговой отладки такое удобно, ибо туда можно break-point ставить, на выход, который один. Других плюсов в C++ я не вижу.

И да, исключение — это на самом деле тоже такой return, что-бы прыгать из глубины функции наружу. Просто обычный return прыгает на один уровень, а исключение — на нужное количество. И тем не менее, ВСЕ локальные деструкторы срабатывают так, как будто там return за return'ом забиты (в машинном коде так оно и есть обычно).

drBatty ★★
()

множественные точки возврата - не Ъ

lazyklimm ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.