это замечательный призыв.
надо учитывать только две вещи:
1. корректная работа при обработке исключений
2. корректная работа внутри транзакционных скобок ttsbegin-ttscommit/ttsabort
Поэтому без-else-овую оптимизацию, по-моему, рационально делать только в простейших случаях, когда в каждой ветке делается return.
Кроме того, в таких простейших случаях без-else-овый код должен выглядеть так
X++:
int foo(int bar)
{
if ( /*expr1*/ ) throw /*some exception*/;
if ( /*expr2*/ ) return 1;
if ( /*expr3*/ ) return 2;
if ( /*expr4*/ ) return 3;
doSomething or throw /*some exception*/;
}
а не так, как предлагает автор блога
См. также книгу Мартина Фаулера про Рефакторинг существующего кода
http://www.ozon.ru/context/detail/id...?partner=mazzy
или скачать эту книгу бесплатно, если предпочитаете читать в электронном виде
http://www.proklondike.com/contentview.php?content=258