برنامه نویسی

چگونه 2000 خط کد را با فقط 300 در فروشگاه Redux جایگزین کردم – بدون شکستن برنامه!

Summarize this content to 400 words in Persian Lang
من یک الگوی مشترک را در میان توسعه‌دهندگانی که با فروشگاه‌های Redux کار می‌کنند مشاهده کرده‌ام: زمانی که با نیازهای جدید، اما کمی متفاوت مواجه می‌شوند، اغلب ویژگی‌های جدیدی ایجاد می‌کنند و کد عمومی دیگ بخار، از جمله کاهش‌دهنده‌ها، thunks، اکشن‌ها و میان‌افزار را دوباره می‌نویسند. این می تواند منجر به تکرار قابل توجهی در سراسر پایگاه کد شود.

ما نمی‌توانیم توسعه‌دهندگان را به طور کامل در این مورد سرزنش کنیم، زیرا استانداردسازی و بهترین شیوه‌های تیم معمولاً توسط رهبران تیم انجام می‌شود.

با این حال، زمانی که APIها یا ریزسرویس‌ها استاندارد می‌شوند – جایی که نقاط پایانی مانند حذف، ایجاد، قرار دادن و واکشی از یک ساختار قابل پیش‌بینی پیروی می‌کنند – امکان ایجاد توابع مرتبه بالاتری وجود دارد که می‌توانند به صورت پویا کاهش‌دهنده‌ها و اقدامات Redux را ایجاد کنند. این کار افزونگی را کاهش می دهد و معماری مقیاس پذیرتر را تشویق می کند. در اینجا مثالی از نحوه اجرای این کار آورده شده است:

https://gist.github.com/ARAldhafeeri/1ad10710bee110b9a88013984272fbbd

این 200 خط کد است، با یک مثال استفاده در اینجا کاری است که انجام می دهد:

ایجاد دینامیک Redux Slice: تابع createEntitySlice یک برش Redux را برای یک موجودیت (مانند رزروها یا کاربران) ایجاد می‌کند و به توسعه‌دهندگان اجازه می‌دهد به راحتی داده‌ها را برای هر موجودیتی با حداقل کد دیگ بخار ایجاد، خواندن، به‌روزرسانی و حذف کنند.

پارامترهای قابل تنظیم: این تابع پارامترهای قابل تنظیم، مانند entityName، نقاط پایانی، extraReducers، extraThunks و ExtraActions را می‌پذیرد و انعطاف‌پذیری را برای موجودیت‌های مختلف و الزامات خاص ممکن می‌سازد.

نظرات پایه CRUD: برای عملیات معمولی مانند واکشی، ایجاد، به روز رسانی، حذف و جستجو که با یک API بر اساس نقاط پایانی ارائه شده در تعامل هستند، thunk های ناهمزمان پایه ارائه می کند. این thunks تماس های ضروری API را مدیریت می کند و خطاها را مدیریت می کند.
Reducers for State Management: این بخش شامل کاهنده هایی برای مدیریت وضعیت بارگیری، ذخیره داده های واکشی شده، رسیدگی به خطاها و انجام اقداماتی مانند جستجو و تنظیم مجدد حالت است.

یکپارچه سازی میان افزار: این کد میان افزار شنونده را برای کنترل عوارض جانبی مانند نمایش پیام های موفقیت یا خطا بر اساس نتیجه عملیات CRUD یکپارچه می کند. همچنین میان‌افزار را با توانایی سفارشی‌سازی رفتار تغییرات حالت، مانند راه‌اندازی اقدامات اضافی در صورت برآورده شدن شرایط خاص، افزایش می‌دهد.

قابلیت استفاده مجدد کد بهینه شده: با استفاده از این رویکرد تابع مرتبه بالاتر، توسعه‌دهندگان می‌توانند از کدهای مکرر دیگ بخار جلوگیری کنند و برش‌های قابل استفاده مجدد و پویا برای موجودیت‌های مختلف بدون نوشتن دستی اقدامات و کاهش‌دهنده‌ها در هر بار ایجاد کنند.

قابل توسعه و مدولار: تابع مرتبه بالاتر عملکرد مورد نیاز را از یک فروشگاه redux برای یک ویژگی تولید می کند، همچنین می توانیم همه چیز را از کاهنده ها به حالت اولیه گسترش دهیم، بنابراین وقتی نقطه پایانی سفارشی می رسد که در پایه های عمومی ایجاد شده پر نمی شود، می توانیم به سادگی آن را اضافه کنید

بهترین،

احمد،

من یک الگوی مشترک را در میان توسعه‌دهندگانی که با فروشگاه‌های Redux کار می‌کنند مشاهده کرده‌ام: زمانی که با نیازهای جدید، اما کمی متفاوت مواجه می‌شوند، اغلب ویژگی‌های جدیدی ایجاد می‌کنند و کد عمومی دیگ بخار، از جمله کاهش‌دهنده‌ها، thunks، اکشن‌ها و میان‌افزار را دوباره می‌نویسند. این می تواند منجر به تکرار قابل توجهی در سراسر پایگاه کد شود.

ما نمی‌توانیم توسعه‌دهندگان را به طور کامل در این مورد سرزنش کنیم، زیرا استانداردسازی و بهترین شیوه‌های تیم معمولاً توسط رهبران تیم انجام می‌شود.

با این حال، زمانی که APIها یا ریزسرویس‌ها استاندارد می‌شوند – جایی که نقاط پایانی مانند حذف، ایجاد، قرار دادن و واکشی از یک ساختار قابل پیش‌بینی پیروی می‌کنند – امکان ایجاد توابع مرتبه بالاتری وجود دارد که می‌توانند به صورت پویا کاهش‌دهنده‌ها و اقدامات Redux را ایجاد کنند. این کار افزونگی را کاهش می دهد و معماری مقیاس پذیرتر را تشویق می کند. در اینجا مثالی از نحوه اجرای این کار آورده شده است:

https://gist.github.com/ARAldhafeeri/1ad10710bee110b9a88013984272fbbd

این 200 خط کد است، با یک مثال استفاده در اینجا کاری است که انجام می دهد:

  1. ایجاد دینامیک Redux Slice: تابع createEntitySlice یک برش Redux را برای یک موجودیت (مانند رزروها یا کاربران) ایجاد می‌کند و به توسعه‌دهندگان اجازه می‌دهد به راحتی داده‌ها را برای هر موجودیتی با حداقل کد دیگ بخار ایجاد، خواندن، به‌روزرسانی و حذف کنند.
  2. پارامترهای قابل تنظیم: این تابع پارامترهای قابل تنظیم، مانند entityName، نقاط پایانی، extraReducers، extraThunks و ExtraActions را می‌پذیرد و انعطاف‌پذیری را برای موجودیت‌های مختلف و الزامات خاص ممکن می‌سازد.
  3. نظرات پایه CRUD: برای عملیات معمولی مانند واکشی، ایجاد، به روز رسانی، حذف و جستجو که با یک API بر اساس نقاط پایانی ارائه شده در تعامل هستند، thunk های ناهمزمان پایه ارائه می کند. این thunks تماس های ضروری API را مدیریت می کند و خطاها را مدیریت می کند.
  4. Reducers for State Management: این بخش شامل کاهنده هایی برای مدیریت وضعیت بارگیری، ذخیره داده های واکشی شده، رسیدگی به خطاها و انجام اقداماتی مانند جستجو و تنظیم مجدد حالت است.
  5. یکپارچه سازی میان افزار: این کد میان افزار شنونده را برای کنترل عوارض جانبی مانند نمایش پیام های موفقیت یا خطا بر اساس نتیجه عملیات CRUD یکپارچه می کند. همچنین میان‌افزار را با توانایی سفارشی‌سازی رفتار تغییرات حالت، مانند راه‌اندازی اقدامات اضافی در صورت برآورده شدن شرایط خاص، افزایش می‌دهد.
  6. قابلیت استفاده مجدد کد بهینه شده: با استفاده از این رویکرد تابع مرتبه بالاتر، توسعه‌دهندگان می‌توانند از کدهای مکرر دیگ بخار جلوگیری کنند و برش‌های قابل استفاده مجدد و پویا برای موجودیت‌های مختلف بدون نوشتن دستی اقدامات و کاهش‌دهنده‌ها در هر بار ایجاد کنند.
  7. قابل توسعه و مدولار: تابع مرتبه بالاتر عملکرد مورد نیاز را از یک فروشگاه redux برای یک ویژگی تولید می کند، همچنین می توانیم همه چیز را از کاهنده ها به حالت اولیه گسترش دهیم، بنابراین وقتی نقطه پایانی سفارشی می رسد که در پایه های عمومی ایجاد شده پر نمی شود، می توانیم به سادگی آن را اضافه کنید

بهترین،

احمد،

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا