이 포스트를 만든 목적

  • 내가 공부한거 정리해 두려고

이 포스트의 준비물

  • gVim 7.2
  • Microsoft Visual C# 2010

참조 링크

참조 서적

  • Effective C#

내용

이벤트 핸들러는 무엇이고, override는 무엇인가?

  • 이벤트 핸들러는 콜백 함수를 받아 주는 변수를 뜻한다.
  • override는 이벤트 함수가 가상 함수 이므로, 이벤트 함수를 override 한 것을 말한다.

왜 override가 이벤트 핸들러 보다 더 좋은가?

책에는 더 좋다고 표현하지만, 상황에 따라서 다르다. 더군다나 override 함수를 이용하는 것보다 나는 오히려 이벤트 핸들러가 더 좋다. 왜냐하면 분해와 재결합이 더 쉽기 때문이다. 그 예로 Microsoft Visual C# 2010 으로 이벤트 붙여 주는 작업을 GUI 툴로 해줄 수 있는데, 이벤트 핸들러를 이용해서 붙여준다.

그렇다면, 언제 override 가 더 좋은가?

  • 이벤트 핸들러 발생시 예외가 발생될 우려가 있어, 무조건 적인 이벤트 함수 호출이 필요로 할 경우
  • 이벤트 핸들러를 이용할 경우보다, override 를 이용하는게 더 효과적으로 프로그램을 빠르게 할 경우(이런 경우는 무척 적다.)

그렇다면, 언제 이벤트 핸들러를 이용하는게 더 좋은가?

  • 이벤트 처리가 런타임에 바뀔 수 있을 경우
    - 예를 들자면, 스타크래프트 할 때, A + 마우스 왼클릭 과 마우스 왼클릭은 서로 다른 상태 이다.
    이럴 경우, 마우스 왼클릭 이벤트에 대해서 A가 눌려지면 이벤트 처리 상태를 바꿀 수 있다.

  • 한개의 이벤트 발생 후 다른 작업을 여러개 해야 할 경우
    - 마우스 이동 이벤트로 현재 마우스 위치에 그림을 띄우는 작업과, 현재 좌표를 표시하는 작업을 해야 한다면,
    그림을 그려주는 함수와 좌표를 표시하는 함수를 하나의 이벤트에 붙여주어, 코드 수정없이 바로 처리 할 수 있다.

결론

  • 나는 override 보다 이벤트 핸들러 함수가 더 좋다고 본다.

여담

  • 상속 메카니즘은 오히려 손이 더 많이 간다.


  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기