2つのクラスC1とC2があります。 C1には2つのメソッドがあり、C2にはそれぞれ複雑度値1の3つのメソッドがあります。C2はC1から継承します。したがって、C2には2 + 3 = 5のメソッドが全部あることを知っています。問題は、クラスのWMCを計算するときに、C2で5つのメソッドを使用する必要があるかどうかです。
申し立てを正当化または反証する例や証拠は見つかりませんでした。
WMCは、CK-Metrics Suiteで指定されている クラスごとの加重メソッド です。
WMCメトリックは、すべてのクラスメソッドの複雑さの合計です。これは、特定のクラスを開発および維持するために必要な労力の指標です。 RefactorITは、WMCを計算するために、宣言されたすべてのメソッドとクラスのコンストラクターのV(G)(循環的複雑度)を合計します...
Chidamber&Kemererは、1993年にオブジェクト指向設計のメトリックに関する独創的な研究で6つのメトリックを定義しました。そのうちの Weighted Methods Per Class(WMC) です。
それらの定義はややあいまいです:
クラスで定義されているメソッドM1、... Mnを持つクラスC1を検討してください。 c1、... cnをメソッドの複雑さとします。次に、WMCは、1〜nのiのciの合計です。 。
Definedは、declaredを意味する可能性があります。引用しています。この場合、継承されたメソッドはカウントされません。この指標は、クラスの作成と維持がどれほど難しいかを測定することを目的としているため、理にかなっています。
ただし、definedは、availableを意味する場合もあります。この場合、継承されたすべてのメソッドをカウントする必要があります。これは著者の推定解釈であるようです 彼らの記事で :
子はクラスで定義されたすべてのメソッドを継承するため、クラス内のメソッドの数が多いほど、子への潜在的な影響が大きくなります。
そしてこれは理にかなっています:
したがって、この2番目の解釈を選択する必要があります。
最近のメトリクス メンテナンスに定量的な影響だけでなく、品質に重点を置く 。 These はあいまいさが少なく、属性とメソッドを考慮に入れ、以下の違いをもたらします。