Comments 4
Когда придумал NSNotificationCenter и в целом антипаттерн в разработке. Ребята, не надо так, пожалуйста
Где можно почитать, что Шина Данных - это антипаттерн?
Шина — штука, которая делает поток данных неявным, легко превращаясь в “черную дыру”, где события тонут без очевидного контроля. Она создает иллюзию слабой связности: вроде компоненты и не зависят друг от друга, но на самом деле завязаны на события, которые непонятно кто и когда генерирует. Дебаггинг становится квестом, потому что отслеживать события, разбросанные по всей системе, — та еще задача. Инкапсуляция страдает, потому что детали реализации начинают выплескиваться наружу.
Как и синглтон, шина удобна, но опасна: глобальная доступность быстро превращается в источник проблем. Поэтому её чаще считают антипаттерном, кроме разве что случаев с микросервисами, где альтернатив особо нет, хотя и там проблемы те же.
В мобильной разработке это давно не тот путь, который стоит выбирать, если хочешь упростить жизнь в долгосрочной перспективе. Явное и инкапсулированное управление состоянием и потоками данных всегда будет более устойчивым и понятным подходом.
Но ведь NSNotificationCenter
– это ничто иное, как шаблон "Шина данных" ("Event Bus").
Разница в отсутствии типизации обусловлена лишь нюансами реализации. NSNotificationCenter
реализован на языке без строгой типизации. Но это абсолютно не значит, что используя этот класс в Swift, Вы не можете получить строгую типизацию в шине данных.
Шаблон изучен на троечку. Применение строгой статической типизации к нестрого типизированным данным тоже. Пересдавать будете?ч
Шина данных и Swift: применение в слабосвязанных архитектурах