Actionscript 3 对多个事件类型使用相同的事件侦听器回调是一种不好的做法吗?

Actionscript 3 对多个事件类型使用相同的事件侦听器回调是一种不好的做法吗?,actionscript-3,events,code-reuse,reduce,event-listener,Actionscript 3,Events,Code Reuse,Reduce,Event Listener,这可能更像是一个主观问题,但对于添加事件侦听器的每个事件类型,是否通常都有一个专用方法是最佳实践 例如: myButton.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver); myButton.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut); //Somewhere else in the code... private function onMouseOver(e:MouseEve

这可能更像是一个主观问题,但对于添加事件侦听器的每个事件类型,是否通常都有一个专用方法是最佳实践

例如:

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;
}
或者,一个事件侦听器回调是否可以简单地用于常见的
事件类型

像这样:

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\u UP
MouseEvent.MOUSE\u DOWN
和其他相关的
MouseEvents
事件监听器要监视,你甚至可以设置一个
switch
语句来处理各种
MouseEvent
类型


我想知道是否有经验丰富的开发人员会反对这种跨多个
事件
类型共享相同方法的方式?

我认为这取决于您有多少事件,以及它们的效果有多相似。如果这两种事件类型在语义上相似(例如
鼠标按下
鼠标单击
),并且它们的效果相似(例如按下按钮),则可以将它们捆绑起来


如果事件的效果差异太大(我认为相同的代码少于80%),我建议不要这样做,然后只需编写多个处理程序并将公共功能分组到单独的子例程中。

我认为这取决于您有多少事件,以及它们的效果有多相似。如果这两种事件类型在语义上相似(例如
鼠标按下
鼠标单击
),并且它们的效果相似(例如按下按钮),则可以将它们捆绑起来

如果事件的效果差异太大(我认为相同的代码少于80%),我建议不要这样做,然后只需编写多个处理程序并将公共功能分组到单独的子例程中