The Daily WTF 日本語
フォロー
CodeSOD: 単一の lint 問題
提供されたC++コードは、ユーティリティ関数に使用される不完全なシングルトン実装を示しています。ユーティリティメソッドとグローバルポインタg_Utilityを持つCUtilitiesクラスが宣言されています。CUtilitiesのコンストラクタは、g_Utilityを現在のインスタンスを指すように初期化します。ただし、この設定では複数のインスタンスを防ぐことができず、新しいインスタンスがポインタを上書きしてメモリ漏れが発生します。CUtilitiesのインスタンスを作成し、そのコンストラクタを呼び出すために、初期化クラスCUtilityInitが使用されていました。問題は、CUtilityInit内のCUtilitiesメンバーがリンターによって使用されていないものとしてマークされ、従業員のOliviaがこの使用されていないメンバーを削除したため、グローバルポインタg_Utilityが初期化されなかったことです。正しい修正は、不完全なシングルトンアプローチに頼るのではなく、起動時に直接g_Utilityをインスタンスで初期化することでした。このテキストは、シングルトンは一般的に悪い慣習であり、不完全な実装は重大な問題を引き起こすと強調しています。開発者は、単にデザインパターンを使用するためだけに使用するのではなく、使用を避けるべきです。