В чем преимущество do-while (ложного)? - PullRequest
19 голосов
/ 18 сентября 2009

При просмотре кода, обработанного другим сотрудником, я вижу много кода, написанного на:

do{
    ...
}while(false);

Какое преимущество (если есть) это дает?

Вот еще скелет, который происходит в коде:

try{
    do{
        // Set some variables

        for(...) {
            if(...) break;
            // Do some more stuff
            if(...) break;
            // Do some more stuff
        }
    }while(false);
}catch(Exception e) { 
    // Exception handling 
}

Обновление:

C ++ Версия:
Являются ли циклы do-while-false обычными?

Ответы [ 14 ]

1 голос
/ 18 сентября 2009

Посмотрите на этот вопрос

ОП спрашивает об этой точной конструкции и объясняет некоторые причины ее использования. Похоже, консенсус заключается в том, что это плохо.

1 голос
/ 18 сентября 2009

Практически на любом языке, кроме C / C ++, это не дает никаких тактических преимуществ.

В C / C ++ есть случай с макросами, где do / while (false) облегчает безопасное расширение макроса в несколько операторов. Это выгодно, когда макрос иначе выглядит как обычный вызов функции.

0 голосов
/ 18 сентября 2009

Единственная причина, по которой я могу придумать, - это создать блок, чтобы сделать переменные, объявленные в пределах {...}, более узко ограниченными, но есть лучшие способы сделать это (например, создание функций или просто создание блоков - как совет Питу Kirkham).

0 голосов
/ 18 сентября 2009

Я предполагаю, что автор этого не доверял своему коду, поэтому он запускал его пару раз, чтобы посмотреть, заставляет ли он работать больше, и это археологические остатки этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...