В C++ до сих пор живёт тихая зона риска: старые идиомы, которые выглядят «умно», но в реальном коде дают утечки, двойные delete и баги, которые всплывают только под нагрузкой.
Классический пример — ручное управление памятью. До C++11 это было нормой: new, delete, copy ctor, assignment, исключения, и где-то рядом уже лежит минное поле. Один пропущенный return — и объект остаётся в памяти. Один неверный copy — и привет, double free 💥
То же самое с «магическими» шаблонами и SFINAE: код компилируется, но читать его потом страшнее, чем чинить прод DNS ночью. Пока проект маленький — терпимо. Когда это в движке, где каждый кадр на счету, такие решения начинают бить по latency и по нервам команды.
Что важно: не все старые приёмы плохие. Но если идиома нужна только потому, что язык когда-то не умел иначе — её надо пересматривать. В C++11+ многое решается проще и безопаснее: умные указатели, move-семантика, constexpr, концепты.
Правило простое: если конструкция экономит 3 строки, но добавляет риск инцидента — это не оптимизация, а будущий разбор полётов ⚙️
Host & DNS
@HostDnsPro
В C++ до сих пор живёт тихая зона риска: старые идиомы, которые выглядят «умно», но в реальном коде дают утечк
Этот пост опубликован в Telegram-канале Host & DNS. Подписаться можно по ссылке: @HostDnsPro.