Здравствуйте, CEMb, Вы писали:
CEM>Часто в примерах встречал код, который инициализировал некоторые члены класса один за другим, в случае ошибки делал деинициализацию уже готовых. В результате к хвосту функции число вызова деинициализаторов было велико. Ну и повторы кода на каждом условии.
RAII
CEM>Как вариант, люди использовали некую булеву переменную для понимания, что инициализации идут хорошо, каждая новая инициализация обкладывалась условием на эту переменную. В конце эта переменная проверялась, если false, то проверялись опять же все хендлы на валидность, и делалась деинициализация.
RAII
CEM>Мне кажется, мой код проще и нагляднее, быстро расширяется, можно не бояться забыть, что что-то пропустил.
RAII
CEM>Жду: критику, доработку, идеи
Основная идея — пусть деинициализацию делает компилятор, автоматически. Благо сейчас уже не надо втягивать себе буст для этого — необходимые решения уже в Стандартной библиотеке. Что-то пошло не так? Срабатывает вываливание из скоупа и соответствующий авто-вызов деструктора. А рукопашный код плох тем, что стопудово что-то забудешь. Да и код замусоривается в портянку. В общем, не устану повторять — RAII.