Потерпи меня здесь ...
В далеком прошлом программисты использовали такие конструкции, как «jump» и «goto» для управления потоком. В конце концов появились общие закономерности и появились такие конструкции, как for, do / while, вызов функций и try / catch, и спагетти были приручены. Эти именованные конструкции дают намного больше информации о намерении, чем общее goto, где вы должны изучить остальную часть кода для контекста, чтобы понять, что он делает. В маловероятном случае, когда вы увидите переход в современном коде от компетентного кодера, вы знаете, что происходит что-то довольно необычное.
По моему мнению, "удалить" - это "переход" к управлению памятью. Современному разработчику доступно достаточно классов интеллектуальных указателей и контейнеров, поэтому у большинства кодов нет особых причин содержать одно явное удаление (конечно, кроме реализаций интеллектуальных указателей). Когда вы видите просто «удалить», вы не получаете информации о намерении; когда вы видите scoped_ptr / auto_ptr / shared_ptr / ptr_container, вы получаете гораздо больше.
т. Е. Идиома должна заключаться в том, чтобы стремиться писать код без удаления, используя соответствующие типы интеллектуальных указателей (как рекомендовано практически любым другим ответом здесь).
Обновление 2013-01-27: Отмечу, что превосходный доклад Херба Саттера о C ++ 11 включает в себя некоторые аналогичные чувства по поводу удаления свободного кода.