C#/ WPF/MVVM開発者として過去2年間を費やした後、私は最近新しい会社でVB/Winformプロジェクトを引き継いだ。C#とWinformsでの適切なクラスのインスタンス化
プロジェクトをC#に変換しました。私はこのプロジェクトのための最良の方法を見つけようと、大量の研究を行ってきましたが、私はリファクタリングと再構成の正確な量を把握しようとしています。
私の問題はこれです:以前の開発者は2つの巨大な静的クラスを作成しました。さまざまなタスクに使用される30以上のフォームがあります。各フォームは、「メインメニュー」タイプの画面をクリックすることによって駆動されるイベントから呼び出されます。プログラムが初期化されると、これらのメガクラスの1つから関数が呼び出され、すべてのフォームをインスタンス化します。信じられないほど多くの統計や定数もあります。
私は定数を壊して、それらのための特定のクラスを作成しました。私はメガクラスをより小さく、より管理しやすい(そして責任に特化した)クラスに分解していますが、これらのフォームをすべてインスタンス化するこの非常に大きな初期化関数があります。
このように、私の質問は(最終的に)次のようになります。私はリソースの悪夢の上に書いたことはありますか?または、これは通常のVB/Winformデザインパターンのいくつかの並べ替え私は保つ必要がありますか?フォームを呼び出すボタンがクリックされたときに各フォーム/クラスがインスタンス化されるように、これを書き直すべきですか?
ありがとうございます。より具体的な情報を提供できる場合は、コメントして編集します。
ありがとうございました。このデベロッパーは置き換えられました。 – Phiter
私には貧弱なデザインのように聞こえます。一度に2つのフォームをインスタンス化することは理解できますが、すべてのフォームではありません。 IMOを使用する準備ができたときにのみインスタンス化する必要があります。ログインフォームが完了した後にメインフォームを表示する準備が整っていない限り、それでも、私はまだ自分のようにはしません。だから、あなたの方法で書いて、必要に応じてインスタンス化するだけです。はるかに良いです。 – ManoDestra
親指は(これはDB接続についてたくさん聞こえますが、実際にはほとんどすべてのクラスに適用されます)、可能な限り早くインスタンス化し、できるだけ早く処理してください。これにより、GCがオブジェクトを効率的にファイナライズできるようになります。長期間保存されたオブジェクトは、後のラウンドのGCファイナライズに移行するため、かなりの時間がかかります。 – Kevin