Да.
Если есть один фрагмент кода C ++, который я мог бы рекомендовать каждому программисту C ++ потратить 10 минут на изучение, это ScopeGuard (теперь часть свободно доступной библиотеки Loki ).
Я решил попробовать (слегка измененную) версию ScopeGuard для небольшой программы Win32 с графическим интерфейсом, над которой я работал. В Win32, как вы, возможно, знаете, есть много разных типов ресурсов, которые нужно закрывать по-разному (например, дескрипторы ядра обычно закрываются с CloseHandle()
, GDI BeginPaint()
должны быть в паре с EndPaint()
и т. Д.) Я использовал ScopeGuard со всеми этими ресурсами, а также для выделения рабочих буферов с new
(например, для преобразования набора символов в / из Unicode).
Меня поразило, насколько короче была программа. По сути, это беспроигрышный вариант: ваш код становится короче и надежнее одновременно. Будущие изменения кода ничего не пропустят . Они просто не могут. Насколько это круто?