برنامه نویسی

**اصل جامد مهندسی نرم افزار**

توضیحات تصویر

هی؟ آیا در مورد اصل محکم مهندسی نرم افزار می دانید؟
نشان می دهد که برای واکنش خاص تر است (به مدت 10 دقیقه آن را بخوانید):

توضیحات کلی:

مجموعه ای از قوانین طراحی در مهندسی نرم افزار به نام اصول SOLID در نظر گرفته شده است تا نرم افزار را توسعه پذیرتر، مقیاس پذیرتر و قابل نگهداری تر کند. این دستورالعمل ها به برنامه نویسان در رسیدگی به اکثر مسائل طراحی نرم افزار کمک می کند و خوانایی، انعطاف پذیری و قابلیت نگهداری کد خود را بهبود می بخشد.

بیشتر مختص React است:

با تشویق کدهای قابل استفاده مجدد، قابل مدیریت و ماژولار، اصول SOLID ممکن است در ReactJS برای بهبود سازماندهی و کالیبر برنامه های React استفاده شود. بیایید به چند نمونه واقعی از نحوه اجرای هر یک از این ایده ها در یک پروژه ReactJS نگاه کنیم:

اصل مسئولیت واحد (SRP):

اصل: یک جزء باید یک دلیل برای تغییر داشته باشد، یعنی باید فقط یک کار داشته باشد.

مثال: به جای ایجاد مؤلفه ای که ورودی های کاربر را مدیریت می کند، داده ها را پردازش می کند و همچنین نتایج را ارائه می دهد، بهتر است این مسئولیت ها را تقسیم کنید:

توضیحات تصویر

اصل باز/بسته (OCP):

اصل: کامپوننت ها باید برای گسترش باز باشند اما برای اصلاح بسته باشند.

توضیح:

اصل باز/بسته (OCP) یکی از اصول کلیدی در طراحی نرم افزار شی گرا است و به همان اندازه در معماری های مبتنی بر کامپوننت مانند ReactJS کاربرد دارد. OCP بیان می‌کند که موجودیت‌های نرم‌افزاری (مانند ماژول‌ها، کلاس‌ها، توابع، یا در مورد React، کامپوننت‌ها) باید برای توسعه باز و برای اصلاح بسته باشند. این بدان معناست که شما باید بتوانید رفتار یک جزء را بدون تغییر کد منبع آن تغییر دهید.

درک اصل

  • برای اصلاح بسته شد: پس از آزمایش و استقرار یک مؤلفه، نباید کد داخلی آن را برای عملکرد جدید تغییر دهید تا از خطر شکستن کد موجود جلوگیری کنید. مؤلفه اصلی باید دست نخورده باقی بماند، که تضمین می کند که به روز رسانی ها یا تغییرات باعث ایجاد اشکالات جدید در عملکردهای موجود نمی شوند.
  • برای برنامه افزودنی باز کنید: باید بتوانید اجزای موجود را برای افزودن رفتارهای جدید گسترش دهید. در React، می توان با استفاده از props، کامپوننت های مرتبه بالاتر (HOC)، رندر props یا hook ها برای افزودن قابلیت های جدید، این کار را به طور موثر انجام داد.

مثال:

مولفه های مرتبه بالاتر الگوی قدرتمندی برای استفاده مجدد از منطق مؤلفه هستند. یک جزء مرتبه بالاتر تابعی است که یک جزء را می گیرد و یک جزء جدید را برمی گرداند، بنابراین عملکرد مولفه اصلی را بدون تغییر مستقیم پیاده سازی آن گسترش می دهد:

توضیحات تصویر

اصل جایگزینی لیسکوف (LSP)

اصل: اجزای مشتق شده باید قابل جایگزینی برای اجزای پایه خود باشند.

توضیح:

در React، LSP به این معنی است که هر مؤلفه ای که مؤلفه دیگری را گسترش می دهد باید بتواند بدون هیچ گونه خطا یا تغییری در رفتار مورد انتظار برنامه جایگزین والد خود شود. این اصل کمتر در React نشان داده می شود زیرا React ترکیب را به ارث می برد. با این حال، درک LSP هنوز مفید است، به ویژه در هنگام طراحی کتابخانه های مؤلفه یا اجزای درجه بالاتر که در آن قابلیت جایگزینی می تواند به یک مشکل تبدیل شود.

مثال:

دو جزء را در نظر بگیرید: BaseButton و PrimaryButton. این PrimaryButton جزء را گسترش می دهد BaseButton و باید قابل تعویض باشد BaseButton بدون هیچ مشکلی

توضیحات تصویر

توضیحات تصویر

اصل جداسازی رابط (ISP)

اصل: کلاینت ها نباید مجبور شوند به واسط هایی که استفاده نمی کنند وابسته باشند.

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

مثال:

یک جزء را در نظر بگیرید UserProfile که اطلاعات کاربر را نمایش می دهد و امکان ویرایش را فراهم می کند:

توضیحات تصویر

اگر UserProfile مؤلفه گاهی اوقات فقط برای نمایش اطلاعات کاربر بدون قابلیت ویرایش استفاده می شود، ISP را نقض می کند زیرا مشتری را مجبور می کند به onEdit حتی زمانی که نیازی به آن نیست.

برای پایبندی به ISP، می توانید این را به دو بخش تقسیم کنید:

توضیحات تصویر

اصل وارونگی وابستگی (DIP)

اصل: ماژول های سطح بالا نباید به ماژول های سطح پایین وابسته باشند. هر دو باید به انتزاعات (مثلاً رابط ها) وابسته باشند. انتزاع ها نباید به جزئیات بستگی داشته باشند. جزئیات باید به انتزاعات بستگی داشته باشد.

توضیح:
در React، DIP را می توان با اطمینان از اینکه کامپوننت ها به وابستگی های انتزاعی به جای پیاده سازی های مشخص وابسته هستند، اعمال کرد. این را می توان با استفاده از قلاب ها، زمینه یا اجزای مرتبه بالاتر (HOCs) برای تزریق وابستگی به دست آورد.

مثال:

یک جزء را در نظر بگیرید DataFetcher که داده ها را از یک API واکشی می کند و نمایش می دهد:

توضیحات تصویر

این مؤلفه به‌خوبی با fetch API و URL مرتبط است و DIP را نقض می‌کند. برای پایبندی به DIP، می‌توانیم منطق واکشی داده‌ها را انتزاع کنیم و آن را به مؤلفه تزریق کنیم:

توضیحات تصویر

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

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

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

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