قانون انتزاعهای نشتکننده در Angular
Angular سطوح بالایی از انتزاع (abstraction) را فراهم میکند. ابزارهایی مانند Router، HttpClient و Signals پیچیدگیهای مرورگر و زمان اجرای JavaScript را پنهان میکنند.
این راحتی از اصلی پیروی میکند که «قانون انتزاعهای نشتکننده» (Law of Leaky Abstractions) نامیده میشود.
این قانون بیان میکند: تمام انتزاعهای غیربدیهی نشت میکنند.
یک انتزاع، پیچیدگی را پنهان میکند، اما آن را از بین نمیبرد.
این مثالها را در نظر بگیرید:
- Signals وضعیت (state) را به سادگی مدیریت میکنند. آنها نحوه انجام رندرینگ را پنهان میکنند.
- HttpClient درخواستهای وب را به راحتی مدیریت میکند.
- RxJS جریانهای داده را با استفاده از اپراتورها مدیریت میکند.
نشت زمانی رخ میدهد که کارها به مشکل میخورند.
وقتی با خطای CORS یا یک timeout مواجه میشوید، باید پروتکلهای HTTP و شبکه را درک کنید. انتزاع HttpClient در پنهان کردن این جزئیات شکست میخورد.
وقتی برای انتخاب بین switchMap و mergeMap دچار تردید میشوید، باید حلقه رویداد (event loop) در JavaScript را درک کنید. RxJS نمیتواند نحوه زمانبندی کارها توسط سیستم را پنهان کند.
ابزارهای مبتنی بر هوش مصنوعی جدیدترین لایه انتزاع هستند. شما از هوش مصنوعی برای نوشتن کامپوننتها، تستها و ویژگیها استفاده میکنید. این کار شما را سریعتر میکند.
اما این قانون در مورد هوش مصنوعی نیز صدق میکند.
وقتی کد تولید شده توسط هوش مصنوعی با خطا مواجه میشود یا ریسکهای امنیتی ایجاد میکند، باید کد زیرساختی را درک کنید. هوش مصنوعی جایگزین دانش شما از TypeScript، مرورگرها یا معماری نمیشود.
هرچه بیشتر به هوش مصنوعی تکیه کنید، بیشتر به اصول پایه نیاز خواهید داشت. شما باید کیفیت آنچه را که هوش مصنوعی تولید میکند، ارزیابی کنید.
مهندسان ارشد (Senior engineers) به این دلیل متمایز هستند که میدانند زیر سطح چه میگذرد. آنها وقتی انتزاعها شکست میخورند، علت اصلی (root cause) را پیدا میکنند.
Angular شما را بهرهور میکند. هوش مصنوعی شما را سریع میکند. اما هیچکدام از آنها شبکه، DOM یا مهندسی پایه را اختیاری نمیکنند.
آنها فقط باعث میشوند تا زمانی که چیزی از کار بیفتد، فراموش کردن اصول پایه آسان شود.
منبع: https://dev.to/duskoperic/the-law-of-leaky-abstractions-in-the-angular-ecosystem-59da