Questo dipende molto dalla quantità di nidificazione che usi. Dopo tutto, è consentito utilizzare i risultati delle funzioni direttamente nelle espressioni per migliorare la leggibilità. Entrambi, il codice che non usa espressioni nidificate (come il codice assembler) e il codice che usa troppe espressioni nidificate è difficile da leggere. Il buon codice cerca di trovare un equilibrio tra gli estremi.
Quindi vediamo alcuni esempi. Quello che hai dato nella tua domanda mi sembra abbastanza legittimo, quindi non c'è nulla di cui preoccuparsi. Tuttavia, una riga come
foo(bar(baz(moo, fab), bim(bam(ext, rel, woot, baz(moo, fab)), noob), bom, zak(bif)));
non sarebbe sicuramente tollerabile. Allo stesso modo, codice come
double xsquare = x*x;
double ysquare = y*y;
double zsquare = z*z;
double xysquare = xsquare + ysquare;
double xyzsquare = xysquare + zsquare;
double length = sqrt(xyzsquare);
non sarebbe molto leggibile. sqrt(x*x + y*y + z*z)
è molto più facile da capire, anche se combina un totale di sei diverse operazioni in una sola espressione.
Il mio consiglio è di prestare attenzione a quali espressioni puoi ancora analizzare facilmente nella tua testa. Nel momento in cui devi dare una seconda occhiata per comprendere cosa fa una singola espressione, è il momento di introdurre una variabile aggiuntiva.