Является ли плохой практикой использование одного и того же обратного вызова слушателя событий для нескольких типов событий? - PullRequest
1 голос
/ 18 ноября 2011

Это может быть более субъективным вопросом, но, как правило, рекомендуется использовать один выделенный метод для типов событий, добавляемых прослушивателем событий?

Например:

myButton.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
myButton.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);

//Somewhere else in the code...

private function onMouseOver(e:MouseEvent):void {
 this.mouseIsOverButton = true;
}
private function onMouseOut(e:MouseEvent):void {
 this.mouseIsOverButton = false;
}

Или, может ли один повторный вызов обработчика событий просто повторно использоваться для общих Event типов?

Примерно так:

myButton.addEventListener(MouseEvent.MOUSE_OVER, onMouseHandler);
myButton.addEventListener(MouseEvent.MOUSE_OUT, onMouseHandler);

//Somewhere else in the code...

private function onMouseHandler(e:MouseEvent):void {
 this.mouseIsOverButton = e.type==MouseEvent.MOUSE_OVER;
}

А если у вас есть MouseEvent.MOUSE_UP, MouseEvent.MOUSE_DOWN и другие релевантные MouseEvents прослушиватели событий, за которыми вы можете наблюдать, вы могли бы даже установить оператор switch для обработки всех различных типов MouseEvent.

Интересно, будут ли опытные разработчикив отличие от этого способа совместного использования одного и того же метода несколькими Event типами?

1 Ответ

4 голосов
/ 18 ноября 2011

Я думаю, это зависит от того, сколько у вас событий, и насколько схожи их эффекты. Если оба типа событий семантически похожи (например, MOUSE_DOWN и MOUSE_CLICK), и их эффект одинаков (например, нажмите кнопку), то вы можете связать их.

Если эффекты событий слишком различны (я бы сказал, что идентичный код составляет менее 80%), я бы посоветовал не делать этого, а просто написать несколько обработчиков и сгруппировать общие функции в отдельную подпрограмму.

...