8

インターフェイスを使用して依存性注入を提供する (vb.net/asp.net) プロジェクトに取り組んでいます。しかし、私には、コードの保守性が失われたように感じます。コードを読みたいときに、使用されている関連クラスのコードに簡単にジャンプすることはできません。インターフェイスしか見えないので、プロジェクトを調べて、どのクラスが実装を行っているかを突き止める必要があります。これは私の生産性を著しく低下させます。

はい、さまざまな置換クラスを使用してインターフェイスを実装できるようになりました。しかし、たとえば、データ ソースをすぐに変更しないことはわかっています。データ ソースを交換する機能を有効にする必要はありません。この依存性注入はすべてやり過ぎのように思えます (実際、これが存在する唯一の本当の理由は、単体テスト用のモック クラスをサポートするためです)。私は実際に、DIが実際には保守性に優れていると述べている場所をいくつか読んだことがあります。ただし、それは、すべてがどこにあるかを既に知っており、更新する必要があるクラスを知っていることを前提としています。どこを見るべきかを見つけることは、私を殺している部分です。

だから、私の質問は次のとおりです。コードをトラバースするより良い方法はありますか? コードをより保守しやすくするためのより良い方法はありますか? 私たちはそれを間違っているだけですか?それとも、これはコースのパーですか?

4

2 に答える 2

5

特に構成がコードから分離されている場合、DI には間違いなくいくらかのオーバーヘッドがあります。これ当然のことですが、時間が経つにつれて、またコードをよりよく理解するにつれて、扱いやすくなります。

ただし、役立つツールがあります。 ResharperまたはCodeRushをご覧ください。どちらも、Visual Studio でのコード ナビゲーション エクスペリエンスを大幅に改善します。Resharper には優れた「Go To Symbol」または「Go To Implementation」メソッドがあり、インターフェイスの実装がどこにあってもすばやくナビゲートするのに役立ちます。

保守性について: 一般に、疎結合の設計は時間の経過とともに重要になります。変更があるためです。コードが緊密に結合されているほど、アプリケーション全体に影響を与えずに小さな変更を加えることが難しくなります。これは、依存性注入を使用するかどうかに関係なく、インターフェイスに依存することが非常に重要な場所です。

于 2010-10-30T05:46:38.183 に答える
4

保守性にはさまざまなものがあります。全体として、新しい機能を追加することでアプリケーションを進化させ続けることができる程度に対処します。

はい、共同作業者がどのように接続されているかを理解することがより困難になる可能性があるため、疎結合を導入することで保守性の側面が損なわれる可能性があります。

ただし、コード ベースがどのように機能するかを理解すれば、速度を落とさずに新しい機能を追加できるようになるはずです。その意味で、疎結合によって保守性は大幅に向上します。

ただし、特効薬ではありません。疎結合は保守可能なコードの前提条件であり、保証ではありません。

于 2010-11-01T09:23:38.387 に答える