intricatezza e numero di funzioni

split (8700 points)
15 59 79
asked Oct 17, 2017 in Funzionamento degli homework by split (8,700 points)
closed Oct 17, 2017 by andrea.sterbini
ciao a tutti

ho un dubbio sull'intricatezza, ho visto che radon dà un livello di intricatezza per ogni funzione, e fornisce anche la media se richiesto.

però se viene valutata solo la funzione più intricata dal prof (questo dice per ora il test provvisorio sugli homeworks consegnati) allora uno potrebbe pensare di spacchettare il programma in 1000000000 funzioncine che fanno tipo una cosa a testa, e magari l'intricatezza viene 1. ma quindi mi chiedo, dovremmo fare una cosa del genere? non verrebbe fuori comunque un codice orrendo e frammentato?
354 views
closed with note: answered

3 Answers

Best answer
andrea.sterbini (172780 points)
513 935 1789
answered Oct 17, 2017 by andrea.sterbini (172,780 points)
selected Oct 17, 2017 by split
Giusto! Appena posso inserisco anche un limite di intricatezza minimo. ;-)

BTW, quando radon dà valori D,E,F vale la pena di spezzare la funzione, altrimenti non vale la pena.
francesco.dev (33560 points)
14 51 129
answered Oct 17, 2017 by francesco.dev (33,560 points)

Ciao split!

Lo scopo è quello di dividere il programma principale in tante funzioni quante possiamo, ma questo non vuol dire creare funzioni laddove non servono! Infatti è inutile creare una funzione legata, ad esempio, ad una semplice somma di valori!

Quindi il mio consiglio è di suddividere ovviamente il codice in funzioni, ma a patto che queste siano funzionali al problema stesso e non servano solo per spezzettare il più possibile il codice ottenuto inizialmente.

Infine ti ricordo che il professore ha specificato che per homework futuri ci saranno anche altri parametri, come addirittura la struttura del codice, la presenza di commenti e quindi molto probabilmente farà attenzione a tali problemi, perché sinceramente creare migliaia funzioni solo per essere "meno intricato" non è una soluzione da prendere in considerazione! La soluzione deve essere un misto di complessità e velocità d'esecuzione, senza trascurarne una delle due! Quindi bisogna creare un codice tanto semplice quanto performante, ma ovviamente non possiamo avere entrambe le cose ai massimi livelli!

Sperando di essere stato chiaro e, soprattutto, d'aiuto!
- Francesco Pio Scognamiglio

Auron (15880 points)
32 126 194
commented Oct 17, 2017 by Auron (15,880 points)
Francesco, condividiamo molte idee a quanto pare xD
francesco.dev (33560 points)
14 51 129
commented Oct 17, 2017 by francesco.dev (33,560 points)
Sempre bello trovare qualcuno che la pensa allo stesso modo! :D
Auron (15880 points)
32 126 194
commented Oct 17, 2017 by Auron (15,880 points)
Quoto in pieno
split (8700 points)
15 59 79
commented Oct 17, 2017 by split (8,700 points)
ma infatti la mia era una domanda sulla valutazione, non volevo arrivare a spacchettare i miei programmi :)
Auron (15880 points)
32 126 194
answered Oct 17, 2017 by Auron (15,880 points)
L'idea non è quella di raggiungere a tutti i costi la minor intricatezza possibile, per come la vedo io... Penso che il Buon senso la faccia da padrone qui... O meglio, è auspicabile avere un valore di intricatezza il più piccolo possibile, ma solo se questo ha un senso... Racchiudendo in una funzione, per esempio, degli elementi omogenei sotto un certo punto di vista... Ma non un solo elemento "solo" per raggiungere la minima intricatezza possibile... Mi corregga il professore se sbaglio, ma penso che un divisione in funzioni "responsabile" sia la soluzione migliore... Anche perché in futuro, quando diventeremo i migliori informatici del mondo e ci chiederanno dei programmi, se dovesse capitare che qualcuno debba rimetterci mano impazzirebbe in mezzo a 800 funzioncine prive di "consistenza"...