Esiste una metrica analoga alla misura della complessità McCabe per misurare quanto sia coerente una routine e anche quanto vagamente (o strettamente) accoppiata la routine sia con un altro codice nella stessa base di codice?
Esiste una metrica analoga alla misura della complessità McCabe per misurare quanto sia coerente una routine e anche quanto vagamente (o strettamente) accoppiata la routine sia con un altro codice nella stessa base di codice?
Risposte:
Penso che la metrica che stai cercando sia LCOM4, sebbene si applichi di più alle classi.
Sonar lo spiega bene qui :
... metrica: LCOM4 (Lack Of Cohesion Methods) per misurare quanto sono coerenti le classi. L'interpretazione di questa metrica è piuttosto semplice in quanto il valore 1 indica che una classe ha solo una responsabilità (buona) e il valore X significa che una classe ha probabilmente responsabilità X (cattiva) e deve essere riformattata / suddivisa.
Non c'è magia qui, solo buon senso. Facciamo un semplice esempio con il driver di classe. Questa classe ha due campi: Car and Brain e cinque metodi: drive (), goTo (), stop (), getAngry () e drinkCoffee (). Ecco il grafico delle dipendenze tra questi componenti. Esistono tre blocchi di componenti correlati, quindi LCOM4 = 3, quindi la classe sembra avere tre diverse responsabilità e infrange il principio di responsabilità singola.
...
È un ottimo strumento, se puoi usarlo. :)
brain.setAngry(driver)
? car.applyBreaks(driver)
?
L'instabilità è supportata in vari strumenti di metrica del codice.