Показать сообщение отдельно
Старый 28.02.2011, 19:10
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Switch - плохой подход, единственное оправдание использованию switch'a - это оптимизация на низком уровне (как правило при чтении и парсинге данных из потока и т.п.) в энтерпрайз switch противопоказан.
Если нет однозначности, что возвращать из функции - это плохой дизайн. Т.е. это значит, что функция выполняет более одной задачи, либо объекты неправильно типизированы. Такую ситуацию, как у вас можно разрулить например:
Код AS3:
private var typesTable:Object = { "foo": Foo, "bar": Bar };
private var callbacksTable:Object = { "foo": fooCallback, "bar": barCallback };
. . .
function fooCallback(value:Foo):void { . . . }
function barCallback(value:Bar):void { . . . }
function createFromDefinition(type:String):void
{
    callbacksTable[type](new this.typesTable[type]());
}
Таким образом вы "красиво" потеряете один тип, при этом сохранив строгую типизацию.
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 28.02.2011 в 19:15.