システムまたはアプリケーションのオブジェクト指向性を判断するのに役立つメトリックはありますか?.NET Reflector Add-ins codeplexプロジェクトでかなりきちんとしたメトリックを見てきましたが、まだこのようなものはありません。そのような測定基準が存在しない場合、それは可能であるか、または有用でさえありますか?オブジェクト指向プログラミングには、カプセル化、継承、およびポリモーフィズムの3つの想定される信条があります。これらに対してプログラムをランク付けしたツールは、オブジェクト指向の理想全体が破棄されたC#(または同様の)コードベースの領域、およびプロジェクトの他の部分と比較してその領域に関連付けられているバグの数を表示できる場合があります。
2 に答える
優れたオブジェクト指向設計の意味のある解釈の1つは、設計内のオブジェクトが、モデル化されているドメインオブジェクトに論理的かつ一貫してマップされることです。これを解釈するには、全体的なコンテキストを含め、解決しようとしている問題についての深い知識が必要です。自動化されたメトリックは、このようにコンテキストを理解するのに十分なほど洗練されていません。
コメントに応えて、私は少し拡大すると思いました:
私が言いたかった主なポイントは、オブジェクト指向は「カプセル化、継承、ポリモーフィズム」ではないということです。これらは、明確に定義された方法で相互作用するオブジェクトとして問題のモデリングを可能にする単なるツールです。優れたメトリックが必要な場合は、実際に測定しようとしているものを理解する必要があります。コード品質の「直感」の概念を、感覚をバックアップするためのメトリックで検証しようとしているようです。その場合、本当の根本的な懸念は何ですか?コードがもろく、予期しない副作用のために簡単に壊れてしまうのではないかと心配していますか?オブジェクトモデルが断片化されすぎていて、追跡するのが難しいですか?個々のオブジェクトが大きすぎて理解および維持できませんか?識別したい欠陥の種類をより適切に定義できれば、適切なメトリックを見つけるのに役立ちます。有用なメトリックのセット。
.NET 開発者向けツール NDepend でサポートされている 82 のコード メトリック定義をご覧ください。