Pull to refresh

Comments 4

Когда придумал NSNotificationCenter и в целом антипаттерн в разработке. Ребята, не надо так, пожалуйста

Шина — штука, которая делает поток данных неявным, легко превращаясь в “черную дыру”, где события тонут без очевидного контроля. Она создает иллюзию слабой связности: вроде компоненты и не зависят друг от друга, но на самом деле завязаны на события, которые непонятно кто и когда генерирует. Дебаггинг становится квестом, потому что отслеживать события, разбросанные по всей системе, — та еще задача. Инкапсуляция страдает, потому что детали реализации начинают выплескиваться наружу.

Как и синглтон, шина удобна, но опасна: глобальная доступность быстро превращается в источник проблем. Поэтому её чаще считают антипаттерном, кроме разве что случаев с микросервисами, где альтернатив особо нет, хотя и там проблемы те же.

В мобильной разработке это давно не тот путь, который стоит выбирать, если хочешь упростить жизнь в долгосрочной перспективе. Явное и инкапсулированное управление состоянием и потоками данных всегда будет более устойчивым и понятным подходом.

Но ведь NSNotificationCenter – это ничто иное, как шаблон "Шина данных" ("Event Bus").

Разница в отсутствии типизации обусловлена лишь нюансами реализации. NSNotificationCenter реализован на языке без строгой типизации. Но это абсолютно не значит, что используя этот класс в Swift, Вы не можете получить строгую типизацию в шине данных.

Шаблон изучен на троечку. Применение строгой статической типизации к нестрого типизированным данным тоже. Пересдавать будете?ч

Sign up to leave a comment.

Articles