Chidamber&Kemererはいくつかのメトリックを提案しました オブジェクト指向コードの場合。その中で、継承ツリーの深さ、メソッドの加重数、メンバー関数の数、子の数、およびオブジェクト間の結合。彼らは、コードのベースを使用して、共分散分析を使用して、これらのメトリックを欠陥密度および保守作業に相関させようとしました。
これらの指標はプロジェクトで実行可能ですか?おそらく、彼らはリファクタリングを導くことができます。たとえば、加重された数のメソッドは、単一の懸念に対処するよりまとまりのあるクラスに分割する必要がある神クラスを示す場合があります。
より良い方法に取って代わられたアプローチはありますか?特に、新しい開発者やチームに引き渡される中規模のプロジェクトで、問題のあるコードを特定できるツールはありますか?
これは難しい質問であり、おそらく「良い」答えはありません。 DanielB。とYannisRizosによって投稿された優れたコメントは健全であり、最良の指標は、その原因と結果とともに、あなたが理解している指標であるとさらに主張します。
このための推奨される講義は、V。Basilic[1]によるGoal-Question-Metricパラダイムであり、L。Westfall[2]によってさらに説明されています。独自のニーズを定義したら、次に質問、次にメトリックを定義し、CKメトリックがこの削減されたセットに関する洞察を提供する場合は、それを選択します。
最初の質問(原文のまま;)に戻ると、Yannisが指摘したように、はい、森の下でもまだ使用されています。そして、それらの意味(複雑さ、保守性)については、関連性があると思います。これは明らかに私の意見です。
ちなみに、CKメトリックは、[4]でSubramanyamによってチャレンジされる前に、最初に[3]で定義されます。
[1] V. R. Basili、G。Caldiera、およびH. D. Rombach、「目標質問メトリックアプローチ」、ソフトウェアエンジニアリング百科事典、vol。 2. Wiley、pp。528–532、1994。
[2] L.WestfallおよびC.Road、「有用なソフトウェアメトリクスへの12ステップ[1]」、第17回太平洋北西部ソフトウェア品質会議の議事録、vol。 57 Suppl 1、no。 2006年5月、pp。S40–3、2005。
[3] Shyam R.ChidamberおよびChrisF。Kemerer、「オブジェクト指向設計のためのメトリクススイート[2]」、vol。 315、いいえ。 12月。 1993年。
[4] R.SubramanyamおよびM.S. Krishnan、「オブジェクト指向設計の複雑さに対するCKメトリックの経験的分析:ソフトウェアの欠陥への影響[3]」、vol。 29、いいえ。 4、pp。297–310、2003。
コードメトリクスを抽出する静的分析ツールは非常に多く、それらのほとんどすべてにCKメトリクスの一部またはすべてが含まれます。ほとんどのツールは言語固有です。 ソナー は私が知っている唯一のものではありません。
有用性について:リファクタリングをガイドし、潜在的に問題のあるコードを特定することは、まさにそれらが良いことだと思います。しかし、それらは間違いなく自分たちの目標として誤用されるべきではありません。
役立つオープンソースツールはありますか?
Metrics Reloaded はInetelliJ IDEAのプラグインで、6つのCKメトリックを提供するのに適しているようです。簡単なサンプルを次に示します。