Possiamo avere una complessità ciclomatica negativa?

4

Sto attraversando un periodo difficile per comprendere la complessità ciclomatica. Ho fatto alcuni video su youtube per questo. Ho ottenuto un valore negativo per la complessità ciclomatica quando uso questa formula M = E - N + P. Ho trovato anche questa formula E = E - N + 2P. Sarei felice di avere una breve descrizione della complessità ciclomatica e del perché può o non può essere negativa?

    
posta Jay Jay 08.06.2016 - 19:30
fonte

3 risposte

7

In ogni componente connesso di un grafico il numero di spigoli deve essere almeno maggiore o uguale al numero di nodi meno 1 (che segue per induzione, un componente con un nodo non ha bisogno di alcun margine, ma ogni volta che aggiungi un nodo aggiuntivo a un componente, è necessario un altro bordo per collegarlo con i precedenti: due nodi richiedono almeno un bordo, tre nodi almeno due e così via). Quindi riassumendo il numero di spigoli e nodi su componenti P, questo porta a

E >= N - P,

e quindi

E - N + P >=0

Poiché P è > = 1 per qualsiasi grafico con almeno un nodo, infine

E - N + 2P > 0

(eccetto per il grafico "vuoto", dove questo è 0).

    
risposta data 08.06.2016 - 21:27
fonte
3

Nessuna complessità ciclomatica non può mai essere negativa. Deve sempre essere almeno uno. La complessità ciclomatica è semplicemente una misura di quanti percorsi diversi un pezzo di codice o un intero programma ha che l'esecuzione potrebbe potenzialmente seguire. Pertanto deve sempre essere almeno uno per il codice eseguibile. E = E - N + 2P è il modo corretto per calcolarlo a mano, ma al di fuori degli esercizi per gli strumenti automatici di classe è in grado di gestirlo per te, quindi calcolare questo non è così importante.

La complessità ciclomatica è un modo per ottenere il numero per confrontare parti del codice per identificare le aree in cui il refactoring apporterebbe un maggiore potenziale beneficio, in realtà è utile solo per confrontare la complessità ciclomatica delle diverse funzioni all'interno della stessa applicazione.

    
risposta data 09.06.2016 - 14:23
fonte
1

La complessità ciclomatica è sempre maggiore o uguale a uno. La ragione di ciò è più facile da vedere se ti allontani dalle formule che possono essere utilizzate per calcolare il complesso ciclomatico, e guarda cosa in realtà fa .

La complessità ciclomatica (come originariamente scritta) funziona sui diagrammi di flusso di controllo dove il nodo di uscita ha un bordo aggiuntivo che si collega al nodo di ingresso . Per tale grafico, conta il numero di cicli indipendenti presenti nel grafico (da cui il nome). Il grafo più semplice possibile, un singolo nodo che è sia l'entrata che l'uscita della funzione, ha un bordo che lo collega a se stesso, e quindi ha 1 ciclo. Qualsiasi cosa aggiunta al grafico può solo aumentare questo numero.

    
risposta data 09.06.2016 - 19:47
fonte

Leggi altre domande sui tag