Questo è strettamente correlato a questa domanda che richiede la complessità di quanto segue:
while (x > level)
x = x – 1;
x = 0
Utilizzando il metodo grafico ha una complessità = 2. Fred Swartz indica un un modo più rapido di calcolare la complessità per Java / C # in base alle istruzioni effettive di queste lingue:
- Start with a count of one for the method.
- Add one for each of the following flow-related elements that are found in the method.
Returns - Each return that isn't the last statement of a method.
Selection - if, else, case, default.
Loops - for, while, do-while, break, and continue.
Operators - &&, ||, ?, and :
Exceptions - catch, finally, throw, or throws clause.
Tuttavia, nonconvergent
chiede come deve essere trattato if .. break
. Quindi, sto pensando di riscrivere sopra il codice in questo modo:
while (true)
{
if (x > level)
break;
x = x – 1;
}
x = 0
Anche se questo è equivalente all'algoritmo iniziale, teoricamente aggiungerei una complessità di 2 ( if
+ break
).
Il mio sentimento è che if ... break
debba contare come 1 e vuoto while
s non dovrebbe contare affatto.
Domanda: come calcolare la complessità ciclomatica per vuoti mentre if + break?