Рассмотрим следующий фрагмент кода:
void MyFun()
{
SetMe();
// more code
if (.. )
{
UnSetMe();
return;
}
// more codes
if ( .. )
{
UnSetMe();
return ;
}
// more code
UnSetMe();
}
Как видите, функция сначала вызывает SetMe (), а затем перед завершением вызывает UnSetMe ().Теперь немного громоздко добавлять UnSetMe () во все места, где должна быть завершена функция, и в некоторых местах ее можно пропустить по ошибке.
Что было бы улучшенным дизайном для обработки такой ситуации.