Per quanto comprendo il concetto, CC è determinato da quante logiche a nidificazione annidate hanno il metodo dato. Può essere sottoposto a refactoring per verificare l'opposto del predicato originale e il richiamo della chiamata. Ad esempio:
void Foo()
{
if (predcate0)
{
if (predicate1)
{
// some code
}
}
}
può essere refactored in
void Foo()
{
if (!predicate0) return;
if (!predicate1) return;
// some code
}
ma la cosa è che, seguendo il ramo predicate0 && predicate1
genererà meno errori di cache in C ++ se questo percorso sarà preso molto più frequentemente.
Ovviamente ho intenzionalmente semplificato il codice. Per esempio ci possono essere decine di predicati e cose come una dipendenza da predicato su un altro predicato.
Che cosa fare in questo caso? Devo buttare via le prestazioni per una migliore leggibilità?