come diminuire la complessità ciclomatica?

9
9Andrea9 (12340 points)
10 31 56
asked Oct 27, 2020 in Programmare in Python by 9Andrea9 (12,340 points)
recategorized Nov 3, 2020 by andrea.sterbini
salve , vorrei abbassare la complessità ciclomatica del mio codice per l'Homework  obbligatorio,

ho due funzioni con complessità pari a 6 e 2:
    F 77:0 ex1 - B (6)
    F 68:0 Points - A (2)

2 blocks (classes, functions, methods) analyzed.
Average complexity: A (4.0)

come posso abbassarla ulteriormente?
283 views

1 Answer

Best answer
alessiodellasanta (11830 points)
7 13 34
answered Oct 27, 2020 by alessiodellasanta (11,830 points)
selected Oct 27, 2020 by 9Andrea9
Ciao Andrea, la complessità ciclomatica viene appunto calcolata per ogni funzione (per poi fare la media) in base a quanti cicli (for, while, if) ci sono.

Più riesci a snellire il programma utilizzando solo i cicli necessari, più questo punteggio si abbassa.
9
9Andrea9 (12340 points)
10 31 56
commented Oct 27, 2020 by 9Andrea9 (12,340 points)
Se sostituissi nella funzione ex1 i cicli con ulteriori funzioni, la complessità si abbasserebbe?
g
gullisa (1170 points)
7 24 31
commented Oct 27, 2020 by gullisa (1,170 points)
Sì, più il codice principale è snello più la complessità si riduce all'aumentare delle esecuzioni che esternalizzi
a
alex_andrei13 (3170 points)
11 37 49
commented Oct 27, 2020 by alex_andrei13 (3,170 points)
Buonasera, come detto anche dagli altri ragazzi, dovresti diminuire l'utilizzo di determinati cicli/operazioni superflue. Esiste anche un sito https://wiki.python.org/moin/TimeComplexity che ti potrebbe aiutare molto a capire le dinamiche
M
Matteo Benvenuti (370 points)
3 8 9
commented Oct 28, 2020 by Matteo Benvenuti (370 points)
Da quello che ricordo a lezione é stato detto che la complessità ciclomatica non viene calcolata facendo la media delle complessità di tutte le funzioni ma considerando solamente  la funzione con la complessità più alta questo per evitare si possa abbassare la complessità totale  creando tante  piccole funzioni che non fanno niente . Per abbassarla quindi basta dividere il proprio programma in  funzioni più piccole , facendo questo però potrebbe alzarsi il tempo di esecuzione del programma.