множественные операторы возврата или "конец"; - PullRequest
1 голос
/ 20 мая 2011

Что лучше по стилю / удобочитаемости?

У меня есть цикл, который считывает ввод и выполняет разные действия в соответствии с вводом, и когда возникает ошибка, мне нужно просто return;.Пример:

while( get_input() )
{
    if( input == "somethingcool" )
    {
        if( !process_somethingcool() )
            return; // <-- a couple of these
    }
    //...
    else // bad input, error handling is fancier than this, but irrelevant to the question
        return;
}
return;

Так я должен заменить отдельные return; на goto end; и поместить метку end: прямо над последним возвратом в примере выше или нет?Мне не нужно "использовать RAII", потому что в блоках if ничего не выделено.Оба способа были бы идентичны во всех смыслах этого слова, за исключением стиля / читаемости / производительности?

Я бы предположил, что производительность идентична, но просто чтобы быть уверенным: так ли это?

Ответы [ 12 ]

0 голосов
/ 20 мая 2011

goto End; хорош отчасти из-за читабельности, а также потому, что если вы поймете, что есть вещи, которые должны произойти до того, как вы закроете функцию, освободите память или освободите ресурсы, например, вы можете централизовать этот процесс вместо копирования вставить его.

0 голосов
/ 20 мая 2011

ИМХО использовать множественные возвраты и не использовать goto. Те, кто использует goto, также поджигают собак.

...