Oggi mi sono imbattuto in questa metrica. La Cyclomatic Complexity è una metrica non orientata agli oggetti, introdotta da Thomas McCabe, che misura la complessità strutturale di un metodo o un insieme di metodi.
Una possibile (banale) definizione è la seguente:
Cyclomatic Complexity (CC) = numero di punti di decisione (if, else, while, …) + 1
Il plugin per .NET Reflector chiamato CodeMetrics permette di calcolare questa metrica sia a livello di metodo che a livello di classe (tutti i metodi della classe).
Alcuni valori di complessità, giusto per curiosità:
- CC della classe Uri = 1807
- CC della classe DataTable = 1316
- CC della classe DataSet = 618
- …
Un valore troppo alto comporta una difficoltà nel testare una classe. Penso che sia proprio da un presupposto di questo tipo che da diverso tempo è nata la Campagna Anti IF per promuovere un utilizzo puro della OOP con lo scopo di realizzare applicazioni flessibili, modificabili e testabili.
Tra il dire e il fare c’è di mezzo il mare !
Per maggiori approfondimenti:
http://en.wikipedia.org/wiki/Cyclomatic_complexity
http://www.antiifcampaign.com/