Nel loro lavoro seminale sulla metrica per la progettazione orientata agli oggetti, Chidamber & Kemerer ha definito nel 1993 6 metriche, tra cui Metodi ponderati per classe (WMC) .
La loro definizione è alquanto ambigua:
Consider a Class C1, with methods M1,...Mn that are defined in the
class. Let c1,...cn be the complexity of the methods. Then WMC is the
sum of ci for i from 1 to n. .
Possibili interpretazioni
Definito potrebbe significare dichiarato , come nella definizione che hai citato. In questo caso, non si contano i metodi ereditati. Questo avrebbe senso perché la metrica intende misurare quanto sia difficile scrivere e mantenere la classe:
- se una classe D erediterebbe da una classe base B, ma non dichiarasse alcun metodo da solo, non è assolutamente difficile da mantenere. È certamente più facile da mantenere, anche se B avesse 100 metodi, di un'altra classe che ha un paio di metodi.
- se una classe B avesse 10 diversi costruttori, ma la classe D ne avesse solo 2, lo sforzo di manutenzione è correlato ai 2 costruttori esistenti e non al 10 della classe base.
Ma definito potrebbe anche significare disponibile . In questo caso dovresti contare tutti i metodi ereditati. Questa sembra essere la probabile interpretazione degli autori nel loro articolo :
The larger the number of methods in a class the greater the potential
impact on children, since children will inherit all the methods
defined in the class.
E questo può anche avere senso:
- un numero elevato di metodi, anche ereditati, rende la classe più specifica e meno facile da riutilizzare.
- un numero elevato di metodi ereditati rende la classe più difficile da utilizzare e la difficoltà a mantenere la coerenza tra i molti metodi potrebbe anche essere maggiore.
- WMC dovrebbe essere rilevante per la classe semantica (secondo C & K), ei metodi ereditati contribuiscono definitivamente alla classe semantica.
Quindi dovresti optare per questa seconda interpretazione.
Ulteriori osservazioni
Le metriche più recenti si concentrano maggiormente sulla qualità piuttosto che sull'impatto quantitativo per la manutenzione. Questi sono meno ambigui e tengono conto di attributi e metodi e fanno la differenza tra:
- metodi visibili e privati, per misurare l'incapsulamento e
- metodi ereditati e disponibili, per prendere maggiormente in considerazione i vantaggi strutturali dell'ereditarietà.