Rozważmy następujący contrived przykład:Stylistic pytanie o powrocie void
void HandleThat() { ... }
void HandleThis()
{
if (That) return HandleThat();
...
}
Ten kod działa dobrze, i jestem pewny, że to Spec-ważne, ale (być może na własną rękę) rozpatruje ten niezwykły styl , ponieważ wywołanie wydaje się zwracać wynik funkcji, mimo że obie funkcje są prototypowane, aby były nieważne.
Zazwyczaj Spodziewam się, aby zobaczyć:
if (That) {HandleThat(); return;}
co czuję, nie pozostawia niejasności co do tego, co się dzieje.
W jaki sposób mogę uzyskać opinię na temat tego, czy styl kodowania zwrotnego jest mylący lub problematyczny? Ma charakter idiomu; powinienem użyć tego lub go unikać?
Generalnie staram się zachować jasność i używać drugiego stylu. Z drugiej strony jest czystość pierwszej formy, która mnie do tego w pewnym sensie przyciąga.
W przypadku jakichkolwiek odsetek, moje faktyczne wykorzystanie tego jest w określonych okolicznościach zwolnione za kaucją do klasy macierzystej. Viz: void derivedclass :: f (...) {if (bail) return parentclass :: f (...); ...} –