Calcolo WMC in CK Metrics Suite

2

Ho due classi C1 e C2. C1 ha 2 metodi e C2 ha 3 metodi ciascuno del valore di complessità 1. C2 eredita da C1. Quindi, so che C2 ha 2 + 3 = 5 metodi in tutto. La domanda è: dovrei prendere C2 per avere 5 metodi durante il calcolo del WMC per le classi?

Non sono riuscito a trovare alcun esempio o prova per giustificare o confutare il reclamo.

WMC è Metodi ponderati per classe come specificato in CK Metrics Suite

The WMC metric is the sum of the complexities of all class methods. It is an indicator of how much effort is required to develop and maintain a particular class. RefactorIT sums the V(G) (cyclomatic complexity) of all declared methods and constructors of class to calculate the WMC...

    
posta Dwarak 11.12.2015 - 14:01
fonte

1 risposta

0

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à.
risposta data 02.01.2017 - 02:17
fonte