2011-11-18 2 views
1

이것은 주로 주관적 질문 일 수 있지만 일반적으로 이벤트 리스너를 추가하는 이벤트 유형마다 하나의 전용 메소드를 갖는 것이 가장 좋습니다.여러 이벤트 유형에 대해 동일한 이벤트 수신기 콜백을 사용하는 것은 나쁜 습관입니까?

예를 들면 :

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 이벤트 청취자가 있다면, 당신도 모든 다양한 MouseEvent 유형을 처리 할 수있는 switch 문을 설정할 수 있습니다.

숙련 된 개발자가 같은 방법을 복수 Event 형식으로 공유하는 방식에 반대한다면 궁금합니다.

답변

4

나는 얼마나 많은 이벤트가 있고 얼마나 효과가 비슷한가에 달려 있다고 생각합니다. 두 이벤트 유형이 의미 상 유사하다면 (예 : MOUSE_DOWNMOUSE_CLICK) 효과가 비슷합니다 (예 : 버튼 누르기). 그런 다음 이벤트 유형을 묶을 수 있습니다.

이벤트의 효과가 너무 다르면 (나는 80 % 미만의 코드라고 말하고 싶다.) 나는 그것을 반대하고, 여러 개의 핸들러를 작성하고 공통 기능을 별도의 서브 루틴으로 그룹화한다.