1

私は 5 ~ 6 個のプロジェクトを含む大きな VS.NET プロジェクトを持っています。これらのプロジェクトの 1 つは Core DLL です。

プラグインのサポートを追加するために、インターフェイスを抽出しましたが、他のクラスを使用するにはインターフェイスが必要であり、Core.dll にはインターフェイスが必要だったため、それらを分離する必要がありました。(相互参照はできません)

この後、約4時間費やしてもそれらを分離できなかったので、私の一日は台無しになりました! 最後に、20以上のプロジェクトを作成しましたが、それでも機能しません(実際には閉じません)。最終的に 50 個のプロジェクトが作成され、それを正しく行うには多くのコードを変更する必要があるようです。

私のコードが高度に結合されていることに気付き、少し戻ってきました。

私はこれを正しく行っていますか?高度に結合されたコードのせいで、会費を払って苦しむ必要がありますか? または、何か不足していますか?

4

4 に答える 4

3

リファクタリング、リファクタリング、リファクタリング。会費を払わなければなりませんが、それだけの価値があると思います。あなたはたくさん学ぶでしょう。

于 2009-04-27T15:32:09.530 に答える
3

インターフェイスを使用している場合は、コアDLLからインターフェイスを引き出し、元のインターフェイスの要件に合わせてインターフェイスを簡単に引き出すことができるはずです。

インターフェイスを介して高度に結合された依存関係がある場合は、少しリファクタリングする必要があります。メインインターフェイスの依存関係からインターフェイスまたは基本クラスのいずれかを抽出してみてください(新しいプロジェクトに簡単に取り込むことができます)。これは、現在発生しているように聞こえる循環依存の問題を防ぐのに役立つはずです。

ただし、一般的には、これを行う前に、一歩下がってプロジェクトについて考えてみてください。プロジェクトのレイアウトは、依存関係よりも機能に基づいている必要があります。クラスをクリーンに実行していることに応じてグループ化すると、依存関係の問題のほとんどがクリーンアップされる傾向があります。可能な限りクリーンなレイアウトを実現するために、抽出を試みる前に、これをリファクタリングすることを検討します。

于 2009-04-27T15:32:17.050 に答える
1

MEFの使用を検討しましたか

于 2009-04-27T15:38:34.353 に答える
0

ディペンデンシー グラフは既に作成しましたか? Graphviz ドットは、問題を視覚化 (および説明) するのに役立ちます。

于 2009-04-27T18:22:18.017 に答える