Ci sono metriche per coesione e accoppiamento?

31

Esiste una metrica analoga alla misura della complessità di McCabe per misurare quanto sia coesiva una routine e anche quanto vagamente (o strettamente) accoppiata la routine è ad altro codice nella stessa base di codice?

    
posta Onorio Catenacci 31.05.2012 - 16:45
fonte

2 risposte

26

Penso che la metrica che stai cercando sia LCOM4, sebbene si applichi maggiormente alle classi.

Sonar lo spiega bene qui :

...metric : LCOM4 (Lack Of Cohesion Methods) to measure how cohesive classes are. Interpreting this metric is pretty simple as value 1 means that a class has only one responsibility (good) and value X means that a class has probably X responsibilities (bad) and should be refactored/split.

There is not any magic here, only common sense. Let’s take a simple example with class Driver. This class has two fields : Car and Brain, and five methods : drive(), goTo(), stop(), getAngry() and drinkCoffee(). Here is the dependency graph between those components. There are three blocks of related components, so LCOM4 = 3, so the class seems to have three different responsibilities and breaks the Single Responsibility Principle. http://i.stack.imgur.com/2527G.png

...

È un ottimo strumento, se puoi usarlo. :)

    
risposta data 31.05.2012 - 17:09
fonte
15
  • Accoppiamento afferent: numero di responsabilità
  • Accoppiamento efferente: numero di dipendenze
  • Instabilità: rapporto dell'accoppiamento efferent all'accoppiamento totale (Afferent + Efferent).

L'instabilità è supportata in vari strumenti di metrica del codice.

    
risposta data 31.05.2012 - 17:04
fonte

Leggi altre domande sui tag