May 19, 2010 09:59
#1. Практика подтвердила теорию -- в правильно написанном плюсовом коде нет проблем с утечками памяти. Следует ли из этого, что GC не нужен?...
Самое смешное, что всякого рода "утечки" в программе, это не безвозвратно утерянная память, а избыточное хранение объектов во всяких контейнерах, которые уже давно надо было бы по логике программы удалить. Искать такие проблемные места практически так же геморно, как и "честные" утечки.
#2. Получил изрядную долю позитива, сев за поддержку сишного проекта семилетней давности, писанного совсем уж безруким товарищем (правда, под моим руководством, а я в те годы тоже был не шибко рукастым).
Очень сильный ход, использовать препроцессорный #ifdef для решения задач, требующих полиморфизма. Код -- полные макароны. Кстати, опыт текущего плюсового проекта (250K+ LOC), который работает на трех платформах (включая одну embedded), показал, что без этого гавна можно вполне спокойно обходиться -- в проекте условная компиляция используется буквально в паре мест...
Да, так вот, пилил я этот старый проект и думал, что когда попадает в руки такой вот код, есть ровно два варианта -- либо его полностью выбрасывать (переписывать), либо увеличивать энтропию и продолжать его уродовать дальше. Увы, второе может продолжаться практически бесконечно долго, по геометрической прогрессии увеличивая время на реализацию какой-то новой фичи.
Да, а еще в этих случаях с особой горечью вспоминаются всяческие советы, которые пишут во всяких умных книжках по рефакторингу.
c++,
programming