Как постепенно убрать синглтоны из легаси-кода и перейти на DI?
Суть
Синглтоны в легаси нельзя убрать одним рефакторингом: X.shared расползается по сотням файлов, а поведение держится на неявном порядке инициализации. Рабочий подход — strangler: маленькие шаги, после каждого код компилируется, поведение не меняется и можно выпускать релиз. Сначала синглтон прячется за протоколом, потом внедряется через параметр по умолчанию, затем создание поднимается в composition root, и только в конце shared исчезает.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep