<img src="https://habrastorage.org/extt/b8/44/61/b8446175cda5937bd2504ef11894f40f.jpeg" /><p><strong>Есть такая категория задач, которые поначалу выглядят настолько безобидно, что ты даже не закладываешь на них много времени.</strong> Ну не обновился какой-то элемент интерфейса после авторизации, бывает. Скорее всего, где-нибудь потерялось событие, не обновилось состояние или кто-то забыл вызвать нужный метод. Открываешь проект, ставишь пару брейкпоинтов и рассчитываешь довольно быстро во всём разобраться.</p><p>Примерно с таким настроением я и взялся за очередной UI-баг, а спустя какое-то время обнаружил себя уже совсем не там, где планировал. Вместо экрана, ради которого всё затевалось, передо мной были несколько репозиториев, менеджеры, сервисы, фабрики, DI-контейнеры и довольно запутанная цепочка создания объектов. Причём чем дальше я по ней продвигался, тем меньше понимал, почему вообще что-то не работает, потому что каждый отдельный компонент выглядел совершенно исправным.</p><p>Методы вызывались, события приходили, состояние обновлялось, никаких ошибок в консоли не было. Даже данные, которые я видел в отладчике, на первый взгляд выглядели вполне корректно. И вот это, пожалуй, раздражало больше всего: приложение вроде бы делало всё, что от него требовалось, но интерфейс упорно продолжал жить своей жизнью.</p><p>В итоге проблема оказалась вообще не в UI и даже не в данных. Просто одна часть приложения продолжала использовать объект, который для другой части приложения уже давно перестал быть актуальным.</p><p>Но обо всём по порядку.</p> <a href="https://habr.com/ru/articles/1099266/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1099266#habracut">Распутаем вместе?</a>