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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Автоматически сгенерированный код в той же студии выглядит куда приличнее. Конечно, там тоже бывает, но в тривиальных ситуациях - код нормальный. Во флексе в принципе, система порочная, просто не бывает ситуаций, когда сгенерированный код не возможно было бы написать гораздо лучше.
Как бы это выглядело: все, что реализует IBindingClient (или IBindingClient2 - еще один замечеательный момент в СДК) реализовывало бы propertyChangeHandler, в который бы передавалась строка описывающая путь к измененному свойству. Собственно, похожим способом, как реализованы рантайм биндинги, только без попыток что-то скрыть, и ради этой скрытности наворотить кучу идиотизмов.
Соответственно, если в ответ на событие нужно было бы вызвать сгенерированный метод класса, а не анонимную функцию которую из класса-наследника и не достать особенно. Т.е. если смотреть на мой пример выше, то был бы сгенерирован примерно следующий код:
Код AS3:
protected function initBindings():void
{
	. . .
	this._bindings["baz.booz"] = this.generatedBinding;
	. . .
}
 
public function propertyChangeHandler(property:String):void
{
	this._bindings[property]();
}
 
protected function generatedBinding():void
{
	this.foo.bar = this.baz.booz;
}
И не нужно ловить ошибки, и создавать видимость чего-то не понятного для разработчика. Если foo или baz нету на момент выполнения биндинга - пусть у разработчика болит голова, как это победить. А то получается ситуация, когда в половине случаев код, который в принципе не может выбросить исключения - типа чтения из константы - заворачивается в try-catch, и, наоборот, в оставшеся половине случаев, когда необходимо получить ошибку, чтобы понять, что что-то не успело проинициализироваться, или не правильно был определен порядок инициализации, все будет молчать.
__________________
Hell is the possibility of sanity