¿Existe una métrica análoga a la medida de Complejidad McCabe para medir qué tan cohesiva es una rutina y también qué tan débilmente (o estrechamente) está la rutina con otro código en la misma base de código?
¿Existe una métrica análoga a la medida de Complejidad McCabe para medir qué tan cohesiva es una rutina y también qué tan débilmente (o estrechamente) está la rutina con otro código en la misma base de código?
Respuestas:
Creo que la métrica que está buscando es LCOM4, aunque se aplica más a las clases.
Sonar lo explica muy bien aquí :
... métrica: LCOM4 (métodos de falta de cohesión) para medir qué tan cohesivas son las clases. Interpretar esta métrica es bastante simple, ya que el valor 1 significa que una clase tiene una sola responsabilidad (buena) y el valor X significa que una clase tiene probablemente X responsabilidades (mala) y debe refactorizarse / dividirse.
Aquí no hay magia, solo sentido común. Tomemos un ejemplo simple con la clase Driver. Esta clase tiene dos campos: Car y Brain, y cinco métodos: drive (), goTo (), stop (), getAngry () y drinkCoffee (). Aquí está el gráfico de dependencia entre esos componentes. Hay tres bloques de componentes relacionados, por lo que LCOM4 = 3, por lo que la clase parece tener tres responsabilidades diferentes y rompe el Principio de responsabilidad única.
...
Es una gran herramienta, si puedes usarla. :)
brain.setAngry(driver)
? car.applyBreaks(driver)
?
La inestabilidad es compatible con varias herramientas de métricas de código.