Existe uma métrica análoga à medida da complexidade de McCabe para medir quão coesa é uma rotina e também quão fracamente (ou fortemente) acoplada a rotina é a outro código na mesma base de código?
Existe uma métrica análoga à medida da complexidade de McCabe para medir quão coesa é uma rotina e também quão fracamente (ou fortemente) acoplada a rotina é a outro código na mesma base de código?
Respostas:
Eu acho que a métrica que você está procurando é LCOM4, embora se aplique mais às classes.
O sonar explica bem aqui :
... métrica: LCOM4 (Métodos de Falta de Coesão) para medir como as classes são coesas. A interpretação dessa métrica é bastante simples, pois o valor 1 significa que uma classe tem apenas uma responsabilidade (boa) e o valor X significa que uma classe provavelmente possui X responsabilidades (ruins) e deve ser refatorada / dividida.
Não há mágica aqui, apenas senso comum. Vamos dar um exemplo simples com a classe Driver. Essa classe possui dois campos: Car e Brain e cinco métodos: drive (), goTo (), stop (), getAngry () e drinkCoffee (). Aqui está o gráfico de dependência entre esses componentes. Existem três blocos de componentes relacionados, então LCOM4 = 3, então a classe parece ter três responsabilidades diferentes e quebra o Princípio de Responsabilidade Única.
...
É uma ótima ferramenta, se você pode usá-lo. :)
brain.setAngry(driver)
? car.applyBreaks(driver)
?
A instabilidade é suportada em várias ferramentas de métrica de código.