방프리

23.06.11 Chapter2. API 설계 (Item 18) 본문

C#/More Effective C#

23.06.11 Chapter2. API 설계 (Item 18)

방프리 2023. 6. 11. 23:07

Item 18 : 이벤트 핸들러보다는 오버라이딩을 사용하라

 

해당 항목은 기본적으로 제공해주는 가상 메서드가 있을 경우 (ex. WPF의 버튼 클릭, Unity UI Event 의 OnDrag)

에 적용되는 항목인 것 같다. 

쉽게 말해 이벤트 핸들러를 통해 기능을 구현하려고 할 경우 오버라이딩으로 구현하였을 때 문제점이 발생하면

쉽게 찾을 수 있으며, 디자인적으로도 분리가 쉽다. 

하지만 이벤트 핸들러로 구현하였을 땐 핸들러에 등록된 모든 이벤트를 확인해야할 뿐만 아니라

어떻게 구현하였느냐에 따라 핸들러에 등록된 이벤트가 추가 혹은 삭제가 될 수 있으므로 추적이 힘들다.

추가로 디자인적으로 맞물리지 않아 디자이너가 선작업 후 프로그래머가 다시 손을 대야 하는

단점이 있다. (한 마디로 구현되어 있는거 사용하자!!)

public partial class MainWindow : Window
{
    public MainWindow()
    {
    	InitializeComponent();
    }
    
    protected override void OnMouseDown(MouseButtonEventArgs e)
    {
    	DoMouseThings(e);
        base.OnMouseDown(e);
    }
}
Comments