CodeSOD: Ein einzelnes Lint-Pr... Notiz

CodeSOD: Ein einzelnes Lint-Problem

Der bereitgestellte C++-Code demonstriert eine fehlerhafte Singleton-Implementierung, die für Utility-Funktionen verwendet wird. Eine Klasse namens CUtilities wird deklariert, die Utility-Methoden und einen globalen Zeiger, g_Utility, enthält. Der Konstruktor von CUtilities initialisiert g_Utility, um auf die aktuelle Instanz zu verweisen. Allerdings verhindert diese Einrichtung nicht die Erstellung mehrerer Instanzen, was zu Speicherlecks führt, wenn neue Instanzen den Zeiger überschreiben. Eine Initialisierungsklasse namens CUtilityInit wurde verwendet, um eine Instanz von CUtilities zu erstellen und damit ihren Konstruktor aufzurufen. Das Problem entsteht, weil das CUtilities-Mitglied innerhalb von CUtilityInit von einem Linter als nicht verwendet markiert wurde. Eine Mitarbeiterin namens Olivia entfernte dieses nicht verwendete Mitglied. Diese Aktion brach das Programm, weil der globale Zeiger g_Utility nie initialisiert wurde. Die korrekte Lösung bestand darin, g_Utility direkt mit einer Instanz bei der Programmstart zu initialisieren, anstatt auf die fehlerhafte Singleton-Ansatz zu vertrauen. Der Text betont, dass Singletons im Allgemeinen eine schlechte Praxis sind und schlecht implementierte Singletons erhebliche Probleme verursachen. Entwicklern wird geraten, Design-Muster nicht einfach nur um ihretwillen zu verwenden.