4

私が自分自身にコードを教えるために使用しているc#プロジェクトは、これまで、大量の関数と大量の「グローバル」静的変数を含む1つの巨大な形式でした。

ここを読んだり、いくつかのチュートリアルを行ったりした後、クラスとカプセル化を適切に使用するためにリファクタリングするプロセスを実行しようとしています。

私のクラス:

  • Program.cs-基本的には初期化するだけForm1です。
  • Form1.cs=すべてのUIを生成および変更します。他のクラスのパブリック関数を呼び出し、他のクラスがそれを更新するために呼び出すことができるいくつかのパブリック関数を持っています。
  • UiStrings.cs=すべてのエラーメッセージ、ダイアログ、指示などが含まれています。
  • Options.cs=いくつかの設定を追跡し、ファイルをインストールするためのパスを構築および更新し、UIの変更に基づいてコードを実行します。
  • Updater.cs=現在のバージョンを追跡し、アセットをダウンロードして適切な場所に配置し、オプションを調整します。
  • Installer.cs=現在のオプションに基づいて、すべてのアセットのインストール/アンインストール/バックアップを処理します。

最初に、で他の各クラスのインスタンスを作成しましたForm1。これは、またはForm1の関数とプロパティにアクセスできるようにするために機能しました。ただし、これらのクラスは、おそらくインスタンス化されていなかったために、互いの一部にアクセスできませんでした。UiStringsOptions

これが私を導いたのは、すべてのカスタムクラスUiStringsOptions静的なものにすることです(それらのいずれかの複数のインスタンスは必要ないため)。これは、これらの各クラス内のすべての関数とプロパティも静的にする必要があることも意味します。

これは、自分が何をしているのかを実際に知っている人がやってくる合理的な解決策ですか?

これまでのテストではうまくいったようですが、クラスがまったくないという最初の試みも、それがどれほど間違っているかを知るまではうまくいきました。

4

1 に答える 1

2

プロジェクトのプロパティを開くと(ソリューションエクスプローラーでプロジェクトを右クリックし、右クリックして[プロパティ]を選択)、UiStringsの目的である[リソース]タブと、[オプション]の目的である[設定]タブが表示されます。標準機能として使用することをお勧めします。これにより、独自のフィーチャクラスを設計する必要もなくなります。

それ以外は静的に行うことができ、静的メンバーにアクセスするためにクラスのコピーを作成する必要はありません。構文は、var instance = new ClassName();ではなくClassName.Method()またはClassName.Propertyです。instance.Method();

于 2012-09-06T03:54:04.527 に答える