visual studio metricas fuente codigo code c# visual-studio-2008 code-metrics maintainability cyclomatic-complexity

c# - metricas - Cálculo de métricas de código en Visual Studio



metricas de codigo visual studio 2017 (1)

¿Cuál es el rango de puntuación preferido para el cálculo de métricas de código para los siguientes

  • Índice de mantenimiento
  • Complejidad ciclomática
  • Profundidad de herencia
  • Clase de acoplamiento

Los valores teóricamente óptimos son:

  • Índice de mantenimiento: 100. Los valores más altos indican una mejor capacidad de mantenimiento.
  • Complejidad ciclomática: 1. La cantidad de caminos diferentes que puede tomar el código.
  • Profundidad de la herencia: 1. El número de definiciones de clase por encima de este en el árbol de herencia, sin incluir las interfaces.
  • Acoplamiento de clase: 0. Número de otras entidades de las que depende esta entidad.

No hay rangos "buenos" duros y rápidos, aunque es posible hacer algunas afirmaciones generales.

  • Tener una alta complejidad ciclomática por método sugiere que un método se está volviendo demasiado complicado.
  • Tener una profundidad de herencia de más de 3 o 4 (de sus propias clases, no del marco) es una señal de problema de que puede estar innecesariamente representando relaciones abstractas que no están realmente en el dominio de su software.
  • El acoplamiento de baja clase es en general mejor, pero a veces es inevitable. En la medida de lo posible, definitivamente debe minimizar la dependencia entre los espacios de nombres, ya que aquí hay muchas menos razones para las dependencias.

Un proyecto solo podría llegar a los cuatro valores de forma simultánea al esencialmente no hacer nada y ser inútil: el software que no hace nada y no depende de nada es ciertamente mantenible, pero no un muy buen uso del dinero de los clientes.

Por lo tanto, toda la complejidad es una compensación: la complejidad adicional llamada inherente codifica más sofisticación en el programa, lo que le permite ampliar el conjunto de características. Lo que le gustaría evitar es la complejidad accidental introducida por una implementación pobre o deficiente.