Закон утечки абстракций в Angular
Angular обеспечивает высокий уровень абстракции. Такие инструменты, как Router, HttpClient и Signals, скрывают сложность браузера и среды выполнения JavaScript.
Это удобство подчиняется принципу, называемому законом утечки абстракций (Law of Leaky Abstractions).
Этот закон гласит: все нетривиальные абстракции протекают.
Абстракция скрывает сложность. Она не устраняет её.
Рассмотрим эти примеры:
- Signals упрощают управление состоянием. Они скрывают то, как происходит рендеринг.
- HttpClient легко обрабатывает веб-запросы.
- RxJS управляет потоками данных с помощью операторов.
«Утечка» происходит, когда что-то ломается.
Когда вы сталкиваетесь с ошибкой CORS или таймаутом, вам приходится разбираться в HTTP и сетевых протоколах. Абстракция HttpClient не справляется со скрытием этих деталей.
Когда вы мучаетесь с выбором между switchMap и mergeMap, вам необходимо понимать JavaScript event loop. RxJS не может скрыть то, как система планирует выполнение задач.
Инструменты на базе ИИ — это новейший уровень абстракции. Вы используете ИИ для написания компонентов, тестов и функционала. Это делает вас быстрее.
Но этот закон применим и к ИИ.
Когда код, написанный ИИ, работает некорректно или создает риски безопасности, вам приходится понимать лежащий в его основе код. ИИ не заменяет ваши знания TypeScript, браузеров или архитектуры.
Чем больше вы полагаетесь на ИИ, тем больше вам нужны основы. Вы должны уметь оценивать качество того, что создает ИИ.
Senior-инженеры выделяются тем, что знают, что скрывается под поверхностью. Они находят первопричину, когда абстракции подводят.
Angular делает вас продуктивными. ИИ делает вас быстрыми. Но ни один из них не делает работу с сетями, DOM или базовую инженерию необязательной.
Они лишь позволяют легко забыть об основах — до тех пор, пока что-нибудь не сломается.
Source: https://dev.to/duskoperic/the-law-of-leaky-abstractions-in-the-angular-ecosystem-59da