이 포스트를 만든 목적
- 내가 공부한거 정리해 두려고
이 포스트의 준비물
- gVim 7.2
- Microsoft Visual C# 2010
참조 링크
참조 서적
- Effective C#
내용
이벤트 핸들러는 무엇이고, override는 무엇인가?
- 이벤트 핸들러는 콜백 함수를 받아 주는 변수를 뜻한다.
- override는 이벤트 함수가 가상 함수 이므로, 이벤트 함수를 override 한 것을 말한다.
왜 override가 이벤트 핸들러 보다 더 좋은가?
책에는 더 좋다고 표현하지만, 상황에 따라서 다르다. 더군다나 override 함수를 이용하는 것보다 나는 오히려 이벤트 핸들러가 더 좋다. 왜냐하면 분해와 재결합이 더 쉽기 때문이다. 그 예로 Microsoft Visual C# 2010 으로 이벤트 붙여 주는 작업을 GUI 툴로 해줄 수 있는데, 이벤트 핸들러를 이용해서 붙여준다.
그렇다면, 언제 override 가 더 좋은가?
- 이벤트 핸들러 발생시 예외가 발생될 우려가 있어, 무조건 적인 이벤트 함수 호출이 필요로 할 경우
- 이벤트 핸들러를 이용할 경우보다, override 를 이용하는게 더 효과적으로 프로그램을 빠르게 할 경우(이런 경우는 무척 적다.)
그렇다면, 언제 이벤트 핸들러를 이용하는게 더 좋은가?
- 이벤트 처리가 런타임에 바뀔 수 있을 경우
- 예를 들자면, 스타크래프트 할 때, A + 마우스 왼클릭 과 마우스 왼클릭은 서로 다른 상태 이다.
이럴 경우, 마우스 왼클릭 이벤트에 대해서 A가 눌려지면 이벤트 처리 상태를 바꿀 수 있다.
- 한개의 이벤트 발생 후 다른 작업을 여러개 해야 할 경우
- 마우스 이동 이벤트로 현재 마우스 위치에 그림을 띄우는 작업과, 현재 좌표를 표시하는 작업을 해야 한다면,
그림을 그려주는 함수와 좌표를 표시하는 함수를 하나의 이벤트에 붙여주어, 코드 수정없이 바로 처리 할 수 있다.
결론
- 나는 override 보다 이벤트 핸들러 함수가 더 좋다고 본다.
여담
- 상속 메카니즘은 오히려 손이 더 많이 간다.
'책 정리 > Effective C#' 카테고리의 다른 글
item 40, 적절한 collection 개체를 이용하라 (0) | 2010.08.14 |
---|---|
item 39, 닷넷의 유효성 검증 기능을 사용하라. (0) | 2010.08.10 |
item 38, 데이터 바인딩을 사용하라. (0) | 2010.08.04 |
item 37, 표준 환경설정 메커니즘을 이용하라 (0) | 2010.08.03 |
item 36, 닷넷 런타임의 진단기능을 활용하라 (0) | 2010.08.01 |
item 34, 웹 API는 큰 단위로 작성하라 (0) | 2010.08.01 |
item 33, 타입의 가시성을 제한하라. (0) | 2010.08.01 |
item 32, 작고 응집도가 높은 어셈블리가 더 좋다. (0) | 2010.07.31 |
item 31, 작고 단순한 메서드가 더 좋다. (0) | 2010.07.25 |
item 30, CLS를 준수하는 어셈블리가 더 좋다. (0) | 2010.07.25 |
최근댓글