리팩토링 1 - 책임 분할
현재 App이 싱글턴이고 (싱글턴인건 좋은데, 여기저기서 App::Get()을 호출하게됨)
여러군데에서 단일책임원칙을 무시하고있다.
top-down 방식으로 개선해보자
- EventQueue
- Event 관련돼서 API가 많이 꼬여있으므로 이걸 고쳐보자는 의미에서 EventQueue에서 시작
- 목적 : EventQueue는 거의 std::queue<Event> 의 역할을 해야하고, Application::HandleEvents에서 EventQueue::Flush()를 할게 아니라 LayerStack을 돌면서 EventQueue에서 pop을 해줘야한다.
- Application & Layer 책임 분할
- Application : 애플리케이션 동작과 설정 관련된 일 담당
- Layer : 각 레이어 로직 담당
- EditorLayer에서도 로직 이동
리팩토링 2 - Configuration 및 디버깅 툴
Debug/Release/Dist로 config를 나누고, 각 단계에서 적절한 code stripping을 이용
시간을 잴 수 있는 profiling 툴 제공