<aside>
🙂 다양한 의존성 주입 방법을 고려하고, 최종적으로 ViewController에 생성자 주입 방식을 통해 컴파일 타임에 주입 여부를 판단할 수 있도록 변경하였습니다.
</aside>

- 초기에 작성한 의존성 주입이라고 착각한 코드입니다.
- 내부에서 생성을 하고 있기 때문에, 인터페이스를 분리한 이유가 전혀 없는 코드입니다.

- 메소드로 해당 내부 프로퍼티에 주입하는 방식으로 변경했습니다.
- 하지만 여전히 해당 메서드가 호출되는지 컴파일 타임에 확인할 수 없다는 문제가 발생했습니다.

- 이에 생성자를 통해 주입하는 방식을 시도했습니다.
- 하지만, 사용하는 다른 개발자가, 단순 생성을 했을 시, 뷰모델 주입이 필수적인지 알 수 없습니다.
- 이를 fatal error로 막았으나, 여전히 컴파일 타임에 알 수 없다는 점은 동일합니다.

- 최종적으로, Coder를 통해 생성하는 경우 자체를 컴파일 타임에 막기 위해
available
태그를 추가했습니다.

- 결과적으로, DIViewController라는 요소를 만들고, ViewModel이 필요한 경우 해당 VC를 상속하여 구현했습니다.
- 제네릭을 사용하여 어떤 타입이든 가능하도록 하였습니다.