Si puo scrivere map() dentro un'altra map(). map() ti costringe di avere approccio funzionale, invece in exec() potresti avere imperativo.
A parte di questo la metrica cc secondo me valuta complessità del codice molto bene. Come già scritto in definizione di complessità ciclomatica(McCabe),su quale basato approccio di radon:
The cyclomatic complexity of a section of source code is the number of linearly independent paths within it—where "linearly independent" means that each path has at least one edge that is not in one of the other paths
Da questo punto sembra che map() dovrebbe aggiungere 1 a complessità ciclomatica. Ma non è cosi semplice.
La formula per contare complessità ciclomatica di operazioni dentro funzione è:
M = E − N + 2P
dove:
E- quantità di lati
N- quantità di nodi
P-è il numero di componenti connessi(nel nostro caso uguale a 1,numero di elementi connessi)
Per esempio se consideri un semplice for con print(indice) dentro avrai:
2 lati - 2 nodi+2=2
da quello che ho capito,in caso di map():
1 lato-2 nodi+2=1
perche non verifica nessuna condizione
In exec() invece nascondi complessita ciclomatica perchè radon lo considera come la stringa
In teoria dovrebbe essere anche un'altra metrica come readability(funzionamento identico come in PA) del codice(per evitare 100 funzioni map una dentro l'altra), che a sua volta potrebbe essere implementata dopo PA di ogni homework.