قانون انتزاعهای نشتکننده در Angular
Angular پیچیدگیها را پنهان میکند. این فریمورک ابزارهایی مانند Router، HttpClient و Signals را در اختیار شما قرار میدهد. این ابزارها به شما اجازه میدهند بدون نگرانی از جزئیات داخلی مرورگر، اپلیکیشن بسازید.
اما انتزاعها نشتکننده هستند. این یک قاعده در مهندسی نرمافزار است. یک انتزاع، پیچیدگی را پنهان میکند، اما آن را از بین نمیبرد.
به HttpClient در Angular نگاه کنید. این ابزار ارسال درخواستها را ساده میکند. اما ناگهان با یک خطای CORS یا یک timeout مواجه میشوید. در این لحظه، ناگهان مجبور میشوید HTTP و ارتباطات شبکه را درک کنید. انتزاع نشت کرده است.
به RxJS نگاه کنید. این کتابخانه جریانهای داده (data streams) را مدیریت میکند. شما از اپراتورها برای مدیریت اقدامات کاربر استفاده میکنید. اگر نتوانید توضیح دهید که چرا switchMap متفاوت از mergeMap عمل میکند، باید JavaScript event loop را مطالعه کنید. RxJS جایگزین آن دانش نمیشود.
ابزارهای AI جدیدترین لایه انتزاع هستند. شما از AI برای نوشتن کامپوننتها، تستها یا قابلیتها استفاده میکنید. این کار سرعت شما را بالا میبرد.
قانون انتزاعهای نشتکننده در مورد AI نیز صدق میکند. وقتی کد تولید شده توسط AI با خطا مواجه میشود یا ریسکهای امنیتی ایجاد میکند، باید بدانید در زیر لایهها چه میگذرد. AI نیاز به دانستن TypeScript یا معماری نرمافزار را از بین نمیبرد.
در واقع، تکیه بر AI، اهمیت مفاهیم پایه را بیشتر میکند. شما باید کیفیت کدی را که AI به شما میدهد، ارزیابی کنید.
فریمورکها شما را بهرهور میکنند. AI شما را سریع میکند. اما هیچکدام از آنها JavaScript، DOM یا شبکه را اختیاری نمیکنند. آنها فقط باعث میشوند تا زمانی که چیزی خراب شود، فراموش کردن این اصول پایه آسان شود.
مهندسان ارشد (Senior engineers) به این دلیل متمایز هستند که میدانند زیر لایه انتزاع چه چیزی نهفته است. آنها وقتی ابزارها از کار میافتند، علت اصلی (root cause) را پیدا میکنند.
Source: https://dev.to/duskoperic/the-law-of-leaky-abstractions-in-the-angular-ecosystem-59da
Optional learning community: https://t.me/GyaanSetuAi