CodeSOD:一个单一的 Lint 问题
提供的 C++ 代码演示了一种存在缺陷的单例实现,用于实用函数。声明了一个 CUtilities 类,其中包含实用方法和一个全局指针 g_Utility。CUtilities 的构造函数将 g_Utility 初始化为指向当前实例。然而,这种设置并不能防止创建多个实例,当新实例覆盖指针时会导致内存泄漏。一个名为 CUtilityInit 的初始化类被用来创建一个 CUtilities 实例,从而调用其构造函数。问题出现在 CUtilityInit 中的 CUtilities 成员被 linter 标记为未使用。一位员工 Olivia 删除了这个未使用的成员。此操作破坏了程序,因为全局指针 g_Utility 从未被初始化。正确的修复方法是在启动时直接用一个实例初始化 g_Utility,而不是依赖于有缺陷的单例方法。文本强调,单例通常是一种不良实践,而实现不佳的单例会带来严重问题。建议开发者避免仅仅为了使用设计模式而使用它们。