Recientemente, nuestra empresa ha comenzado a medir semanalmente la complejidad ciclomática (CC) de las funciones de nuestro código e informa sobre qué funciones han mejorado o empeorado. Así que hemos comenzado a prestar mucha más atención al CC de funciones.Buscando aclaraciones sobre el código de estructuración para reducir la complejidad ciclomática
He leído que CC puede calcularse informalmente como 1 + el número de puntos de decisión en una función (por ejemplo, declaración si, para bucle, seleccionar etc.), o también el número de rutas a través de una función ...
entiendo que la forma más fácil de reducir CC es utilizar la refactorización Extraer método en varias ocasiones ...
Hay algunas cosas que estoy seguro acerca de, por ejemplo, ¿Cuál es el CC de los siguientes fragmentos de código?
1)
for (int i = 0; i < 3; i++)
Console.WriteLine("Hello");
Y
Console.WriteLine("Hello");
Console.WriteLine("Hello");
Console.WriteLine("Hello");
Ambos hacer lo mismo, pero ¿la primera versión tiene un CC más alta debido a la sentencia for?
2)
if (condition1)
if (condition2)
if (condition 3)
Console.WriteLine("wibble");
Y
if (condition1 && condition2 && condition3)
Console.WriteLine("wibble");
Suponiendo que el lenguaje hace una evaluación de cortocircuito, como C#, entonces estos dos fragmentos de código tienen el mismo efecto ... pero es la CC del primer fragmento más alto porque tiene 3 puntos de decisión/si enunciados?
3)
if (condition1)
{
Console.WriteLine("one");
if (condition2)
Console.WriteLine("one and two");
}
Y
if (condition3)
Console.WriteLine("fizz");
if (condition4)
Console.WriteLine("buzz");
Estos dos fragmentos de código hacer cosas diferentes, pero no tienen la misma CC? ¿O la declaración if anidada en el primer fragmento tiene un CC más alto? es decir anidado si las declaraciones son mentalmente más complejas de entender, ¿pero eso se refleja en el CC?
cuyo documento original se refiere usted? ¿Podrías proporcionar un enlace? – RickL
enlace agregado y el nombre (Thomas J McCabe) – moogs
Gracias, hojeé el papel, es bastante difícil de leer, ya que está en un estilo técnico preciso. – RickL