Примеры программирования: do { … } while (false);

Позвольте мне поделиться одной из моих любимых идиом программирования: ... do { ... } while (false);

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

// setup
int status = 0;do {
// preconditions
status = doSomething();
if (status) break;
status = doSomethingElse();
if (status) break;

// computation
status = doWhatYouWantedToInTheFirstPlace();
} while (false);

// cleanup
return status;

 

Без механизма DWF тот же код требует требует либо применения исключений, дублирования кода очистки, либо написания глубоко вложенных блоков if, пока не будут удовлетворены все условия. Хотя DWF изначально может показаться немного неортодоксальным, код его на самом деле очень ясный, понятный и полезный.

Понравилась статья? Поделиться с друзьями: