Return из середины процедуры, кстати, тоже всегда может (и должен) быть преобразован в цепочку ЕСЛИ-ИНАЧЕ-ЕСЛИ.

Сегодня на работе отрефакторил две процедуры говнокода (каждая была по несколько сотен строк и насыщенна под завязку return-ами из середины). Теперь каждая из этих процедур выглядит навроде следующего:
## Код:
```
void F (...)
{
  ...
  if (a(...))
  {
    b(...);
  }
  else if (c(...))
  {
    d(...);
  }
  else if (e(...))
  {
    f(...);
  }
  else if (g(...))
  {
    h(...);
  }
}
```
Обратите внимание, что никаких вложенных if-ов здесь нету.