리팩토링 1 - 책임 분할

현재 App이 싱글턴이고 (싱글턴인건 좋은데, 여기저기서 App::Get()을 호출하게됨)

여러군데에서 단일책임원칙을 무시하고있다.

top-down 방식으로 개선해보자

  1. EventQueue
    1. Event 관련돼서 API가 많이 꼬여있으므로 이걸 고쳐보자는 의미에서 EventQueue에서 시작
      1. 목적 : EventQueue는 거의 std::queue<Event> 의 역할을 해야하고, Application::HandleEvents에서 EventQueue::Flush()를 할게 아니라 LayerStack을 돌면서 EventQueue에서 pop을 해줘야한다.
  2. Application & Layer 책임 분할
    1. Application : 애플리케이션 동작과 설정 관련된 일 담당
    2. Layer : 각 레이어 로직 담당
    3. EditorLayer에서도 로직 이동

리팩토링 2 - Configuration 및 디버깅 툴

Debug/Release/Dist로 config를 나누고, 각 단계에서 적절한 code stripping을 이용

시간을 잴 수 있는 profiling 툴 제공