ایجنتها نردبون انتزاع رو برعکس کردن
خلاصهٔ کاملتر
ویروک تعریف میکنه که برای یه پروژهٔ فریلنسی سه تا چارت لازم داشت که دقیقاً با دیزاین سیستم مشتری جور باشه. یه بار با کامپوننتهایی روی ماژولهای scale و shape کتابخونهٔ D3 (که فقط عدد رو به پیکسل تبدیل میکنن و دربارهٔ ظاهر نظری ندارن) ساختشون، یه بار هم با Recharts، هر دو با همون API و همون توکنهای دیزاین. نسخهٔ پریمیتیو دقیق به دیزاین رسید؛ Recharts ۸۰ درصد راه رو سریعتر رفت ولی ۲۰ درصد آخر باز هم همون SVG دستی رو خواست.
حرف اصلی مقاله اینه: انتزاع یعنی کار پیادهسازی که یکی دیگه قبلاً انجامش داده و توی یه پکیج فریز شده. پولش رو نقدی نمیدی، با انعطاف میدی. نظرهای کتابخونه دربارهٔ رندر و استایل و رفتار، همراه راهحلش میاد و همون لحظه که نیازت از چیزی که کتابخونه براش ساخته شده بیرون میزنه، دوباره شروع میکنی به پرداخت: کامپوننت wrapper، استایل وصلهای، راهفرارهای prop و ایشوهایی که با «not planned» بسته میشن.
به گفتهٔ نویسنده، بیست سال بالا رفتن از این نردبون کاملاً منطقی بود، چون وقت آدم کمیابترین منبع بود. پلاگینهای jQuery، ریاکت و انگولار، کیتهای دیزاین سیستم، ORMها و متافریمورکها هرکدوم کار گرون انسانی رو به یه وابستگی ارزون تبدیل کردن. Tailwind به جای Bootstrap و بعدش shadcn که کامپوننت رو نصب نمیکنی بلکه کپی میکنی تو پروژهات، اولین شرطبندیها روی مالکیت بودن؛ قبل از اینکه مالکیت ارزون بشه.
نویسنده جلوی یه ایراد رو هم میگیره: d3-scale و date-fns و zod هم کتابخونهان. به نظرش تفاوت مهم بین «کتابخونه داشتن یا نداشتن» نیست، بین بیطرف بودن و نظردار بودنه؛ یعنی وابستگی برات محاسبه میکنه یا برات تصمیم میگیره. حساب تاریخ، اعتبارسنجی schema و جایگذاری المان شناور مسئلههای حلشده با edge caseهای وحشتناکن و ارزش نگه داشتن دارن. چیزی که باید مال خودت باشه رندر و تعامل و رفتاره، همون بخشی که هویت محصولت رو میسازه.
مقاله چند تا «ولی» صریح هم داره. اگه تیمت هنوز جریان کاری ایجنتی جاافتاده نداره، ریاضی قدیمی سر جاشه و لایهٔ دستی هنوز سه هفته کار بهعلاوهٔ نگهداری بیپایانه. اگه UI محصولت معمولیه، کتابخونه حتی با ایجنت هم برندهست. برای کامپوننتهایی با نیاز دسترسپذیری عمیق مثل combobox و date picker، نویسنده میگه سالها تست screen reader تو کتابخونههای پخته نشسته و راحت بازتولیدشون نمیکنه. جمعبندیش اینه که ایجنتها قاعده رو عوض نکردن، فقط نقطهٔ تقاطع رو جابهجا کردن.
نکات کلیدی:
- تو آزمایش نویسنده انیمیشن ورودی Recharts روی استک ریاکت پروژه فریز شد و تنها راهحل، خاموش کردن انیمیشن بود.
- لایهٔ اختصاصی چند صد خط برای هر کامپوننت بود، روی ماژولهای scale و shape کتابخونهٔ D3 و رندر با ریاکت.
- معیار انتخاب وابستگی: بیطرف برات محاسبه میکنه (d3-scale)، نظردار برات تصمیم میگیره (یه فریمورک چارت).
- shadcn ui کامپوننت رو نصب نمیکنی، کپی میکنی تو پروژه و مالکش میشی.
- ایجنت هزینهٔ نوشتن لایه رو کم میکنه، نه هزینهٔ فهمیدنش؛ نویسنده میگه آزمایشش چون D3 بلد بود جواب داد.




