Вопрос проверяет умение читать, оценивать и постепенно улучшать существующий код без полного переписывания.
Анализ стоит начинать с ответственности контроллера. Нужно понять, какую логику можно вынести за его пределы. Важно обращать внимание на зависимости, дублирование и работу с асинхронностью. Улучшения лучше делать итеративно. Главная цель — снизить связность и упростить чтение.
Работа с чужим кодом — типичная задача сеньор-разработчика, и здесь важно не ломать систему резкими изменениями.
Перед изменениями нужно понять текущее состояние кода.
Контроллер не должен:
выполнять сетевые запросы;
хранить бизнес-логику;
управлять навигацией напрямую;
форматировать данные.
Если он это делает — есть точки для рефакторинга.
Стоит обратить внимание:
на прямые инициализации сервисов;
на отсутствие протоколов;
на сложные графы владения.
Это часто источник проблем с тестированием и памятью.
Типичные сигналы:
Большие методы.
Дублирующаяся логика.
Сильная связанность с UIKit.
Сложные if и switch.
Перед перечислением важно подчеркнуть: улучшения должны быть постепенными.
бизнес-логика → ViewModel / Presenter;
форматирование → отдельные объекты;
навигация → координаторы.
убрать вложенные completion;
централизовать обработку ошибок;
явно управлять состояниями.
говорящие имена;
уменьшение методов;
логическое разделение кода.
Анализ чужого view controller — это поиск лишней ответственности. Чем меньше контроллер знает и делает, тем проще его поддерживать и развивать.