Почему GitHub C++ Core Guideline говорит, что глобальный объект лучше, чем синглтон?
Основные принципы Github C++ гласят:
Глобальный объект часто лучше одиночного.
Я всегда думал об обратном. Что-то изменилось с тех пор в C++? Или может это просто очередная опечатка?
1 ответ
Решение
Это обоснование для избежания синглетонов из одной и той же коллекции рекомендаций:
I.3: избегать одиночных игр
причина
Синглтоны - это в основном сложные замаскированные глобальные объекты.
пример
class Singleton {
// ... lots of stuff to ensure that only one Singleton object is created,
// that it is initialized properly, etc.
};
Есть много вариантов синглтон-идеи. Это часть проблемы.
Мой анализ намерений автора:
Проще лучше. Если маскировка глобальных объектов в синглетах не решает проблемы глобальных объектов - как следует из приведенного выше руководства - тогда нет смысла усложнять код с помощью маскировки.