CodeSOD: Проблема одной провер... Заметка
The Daily WTF на русском

CodeSOD: Проблема одной проверки

Предоставленный код на C++ демонстрирует ошибочную реализацию синглтона, используемую для служебных функций. Объявлен класс CUtilities с служебными методами и глобальным указателем g_Utility. Конструктор класса CUtilities инициализирует g_Utility, чтобы он указывал на текущий экземпляр. Однако такая настройка не предотвращает создание нескольких экземпляров, что приводит к утечкам памяти, когда новые экземпляры перезаписывают указатель. Для создания экземпляра класса CUtilities использовался класс инициализации CUtilityInit, который вызывал его конструктор. Проблема возникает, потому что член CUtilities внутри CUtilityInit был помечен линтером как неиспользуемый. Сотрудница Оливия удалила этот неиспользуемый член. Это действие сломало программу, потому что глобальный указатель g_Utility никогда не был инициализирован. Правильным решением было прямое инициализирование g_Utility экземпляром при запуске, а не полагаться на ошибочную реализацию синглтона. Текст подчеркивает, что синглтоны в целом являются плохой практикой, а плохо реализованные создают значительные проблемы. Разработчикам рекомендуется избегать использования шаблонов проектирования просто ради их использования.