Si consideri il seguente esempio inventato:questione stilistica relativo ritorno vuoto
void HandleThat() { ... }
void HandleThis()
{
if (That) return HandleThat();
...
}
Questo codice funziona bene, e sono abbastanza sicuro che è spec-valida, ma io (forse da solo) considerano questo stile insolito , poiché la chiamata sembra restituire il risultato della funzione, nonostante il fatto che entrambe le funzioni siano prototipate per essere annullate.
In genere, mi sarei aspettato di vedere:
if (That) {HandleThat(); return;}
che, ritengo, lascia alcuna ambiguità su ciò che sta succedendo.
SO community, posso avere la tua opinione sul fatto che lo stile di codifica return-void sia confuso o problematico? Ha la sensazione di un idioma; dovrei usare questo o evitarlo?
In generale, mi piacerebbe fare chiarezza e utilizzare il secondo stile. D'altra parte, c'è una precisione nella prima forma che mi attira in qualche modo.
Nel caso in cui sia di interesse, il mio uso effettivo di questo è di eseguire il rilascio su una classe di genitore in determinate circostanze. Viz: void derivedclass :: f (...) {if (bail) return parentclass :: f (...); ...} –