わかりましたので、グローバル変数が悪いと見なされ、シングルトン パターンが乱用されていることはわかっています。また、クラスは 1 つのタスクだけを実行し、その 1 つのタスクを実行できるようにする変数のみを含める必要があることを多くの場所で読みました。しかし、最近のプロジェクトに取り組んでいる間、実際にコードを書く前にこれらのルールについて考え、プログラムの最初の段階でルールを破る傾向があることに気付きました。
私は現在、MFC ダイアログ ベースのアプリケーションに取り組んでいますが、この質問は UI 駆動型のアプリケーションに適用できます。ステート マシン、ファイルの読み取り/書き込み、およびハードウェア インターフェイスを処理する個別のクラスがあります。これらのオブジェクトはすべて、何らかのタイプの UI コントロールまたはプロパティの表示/編集が必要になります。MFC ダイアログ アプリケーションでは、ダイアログはプログラムなので、プログラムが閉じられるまで存在している必要があります。私は通常、オブジェクトをアプリケーションのメイン ダイアログ クラスに配置し、ダイアログ クラスに 2 つの役割を持たせました。アプリケーション内の他のすべてのオブジェクトのメイン UI とホームの両方として。他のアプリケーションでは、これらのオブジェクトをグローバルに作成し、必要な場所から参照しました。これらの方法はどちらも正しくないようです。最初のオプションは、1 つのクラス、1 つのタスク ルール、2 つ目はグローバルに依存し、隠れた依存関係も作成します。ある種の依存性注入を導入することはできますが、注入するこれらすべての変数はどこに存在するのでしょうか?
ルールを破ることなくプログラムを整理するために、他の人は何をしているのでしょうか?