SOLID مقدمه
- SOLID یک ابر مجموعه از 5 اصل است. این اصول اساساً برای طراحی برنامه استفاده می شود که به ساده سازی توسعه و قابل نگهداری و آزمایش شدن آن کمک می کند.
- مخفف SOLID اولین بار توسط Michael Feathers معرفی شد.
- با استفاده از اصول SOLID، بسیاری از مشکلات طراحی نرم افزار حل می شوند زیرا این موارد بر اساس اصول برنامه نویسی شی گرا هستند. از آنجایی که همه چیز در برنامه به عنوان Object تلقی می شود، باید قوانینی برای استفاده از آن وجود داشته باشد.
SOLID مخفف
- S - اصل مسئولیت واحد (SRP)
- O - اصل بسته باز (OSP)
- L - اصل جایگزینی لیسکوف (LSP)
- I - اصل جداسازی رابط (ISP)
- د - اصل وارونگی وابستگی (DIP) – نه تزریق وابستگی
اکنون، بیایید هر اصل را با جزئیات از جمله درک اساسی و تعریف ببینیم.
اصل مسئولیت واحد
- رابرت سی مارتین در مورد این اصل می گوید که "یک کلاس باید فقط یک دلیل برای تغییر داشته باشد"
- هر کلاس یا ماژول باید فقط یک مسئولیت داشته باشد، نباید با سایر وظایف یا مسئولیت ها یا مسئولیت ها ترکیب شود. بنابراین زمانی که تنها یک مسئولیت باید انجام شود، یک یا یک دلیل برای تغییر آن وجود خواهد داشت.
- این بدان معناست که هر کلاس باید تنها یک موجودیت را نشان دهد و نباید دارای ویژگی های مخلوط باشد. به عنوان مثال، اگر یک کلاس "EmployeeDetail" باشد، باید فقط حاوی جزئیات اولیه Employee باشد. نباید دارای ویژگی ها یا جزئیات پرداخت باشد.
اصل باز/بسته
- "موجودات نرم افزاری باید برای توسعه باز باشند، اما برای اصلاح بسته شوند"
- این وضعیت بیشتر زمانی اتفاق میافتد که پس از اجرای عملکرد، درخواستهای تغییر دریافت میکنیم. در این حالت، ما نباید کلاس موجود را همانطور که قبلاً استفاده شده است تغییر دهیم یا تغییر دهیم، و اگر سعی کنیم کلاس موجود را تغییر دهیم، نیاز به آزمایش مجدد عملکردی که قبلاً پیاده سازی شده است و آزمایش بیشتری وجود دارد. این کار بسیار وقت گیر و پرهزینه است. بنابراین باید ساده پیش برویم تا کلاس موجود را همانطور که هست نگه داریم و آن را به کلاس دیگری ارث ببریم تا بتوانیم عملکرد جدیدی اضافه کنیم. این بر عملکرد موجود تأثیری نخواهد داشت
- این بدان معناست که اگر کلاسی را ایجاد و استفاده کردیم، نباید تغییر یا اصلاح شود. اگر نیاز به اضافه کردن چیزی به آن داریم، باید آن کلاس اصلی را به ارث ببریم و عملکرد را در یک کلاس مشتق شده اضافه کنیم.
اصل جایگزینی لیسکوف
- به گفته باربارا لیسکوف، "اشیاء در یک برنامه باید با نمونه هایی از انواع فرعی خود بدون تغییر در صحت آن برنامه قابل تعویض باشند."
- در این اصل باید مراقب اجرای متدها در کلاس مشتق شده باشیم. اگر متدی در کلاس Base وجود داشته باشد و همان روش در کلاس مشتق شده پیاده سازی نشود، نقض اصل جایگزینی Liskov است. دوباره برای نگهداری، انعطاف پذیری و تست پذیری مفید است.
- یعنی باید منطق متدهای ABSTRACT را داشته باشیم و اجرا کنیم و با موفقیت اجرا کنیم. وقتی می گویم با موفقیت اجرا شود، به معنای زمان کامپایل و زمان اجرا است. متدی که در کلاس پایه است و در کلاس مشتق شده هیچ پیاده سازی وجود ندارد و حتی نباید استثنا بیاندازد.
اصل جداسازی رابط
- همانطور که در ویکیپدیا آمده است، «در زمینه مهندسی نرمافزار، اصل جداسازی رابط (ISP) بیان میکند که هیچ مشتری نباید مجبور شود به روشهایی که استفاده نمیکند وابسته باشد. ”
- در حین کار بر روی یک برنامه ما با نهادهای مختلفی مانند کارمندان، پرداخت ها، سفارشات، حقوق و بسیاری موارد دیگر سر و کار داریم. این اصل می گوید که هر موجودیت باید واسط های جداگانه ای داشته باشد تا عملکرد یک موجودیت نباید در اینترفیس دیگر اختلاط یا تداخل داشته باشد. با این اصل، عملکرد را به قطعات یا بلوک های کوچک تقسیم می کنیم تا به یکدیگر وابسته نشوند. این جداسازی واقعاً در طراحی و توسعه برنامه کمک زیادی می کند.
- بنابراین به جای قرار دادن همه چیز، بهتر است هر اطلاعاتی در یک رابط ایجاد شود. مانند IEmployee، IPayment، IAttendance و غیره.
اصل وارونگی وابستگی
- همانطور که در ویکیپدیا آمده است : «در طراحی شیگرا، اصل وارونگی وابستگی شکل خاصی از جداسازی ماژولهای نرمافزاری است».
- ماژول های سطح بالا نباید به ماژول های سطح پایین وابسته باشند. هر دو باید به انتزاعات بستگی داشته باشند.
- انتزاع ها نباید به جزئیات بستگی داشته باشند. جزئیات باید به انتزاعات بستگی داشته باشد.
برخی از انتقادات رایج از SOLID وجود دارد،
- اصول جامد مبهم هستند
- SOLID به کد پیچیده منجر می شود
- SOLID بیش از حد ایده آل است
- SOLID یک ترفند بازاریابی است
پاسخ به این انتقاد این است که SOLID is Principles، نه RULES. اگر نمیخواهید پیادهسازی کنید، آن را انجام ندهید، اما پس از آن، با بزرگ شدن برنامه با مشکلات زیادی مواجه خواهید شد. برخی به شرح زیر هستند.
- سینگلتون
- اتصال کامل
- آزمایش ناپذیری
- بهینه سازی زودرس
- نامگذاری غیر توصیفی
- تکثیر. مضاعف شدن
پیروی از اصل SOLID به ما کمک می کند:
- دستیابی به کاهش پیچیدگی کد. گاهی اوقات پیچیدگی را افزایش می دهد، اما در دراز مدت امکانات یا مزایای دیگری را به همراه دارد.
- خوانایی، توسعه پذیری و نگهداری را افزایش دهید
- خطا را کاهش دهید و قابلیت استفاده مجدد را پیاده سازی کنید. از آنجایی که قابلیت استفاده مجدد هسته برنامه نویسی است، نباید کد را در حین توسعه تکرار کنیم.
- دستیابی به آزمون پذیری بهتر این مهمترین بخش برنامه است زیرا کیفیت یکی از جدی ترین نگرانی ها است.
- کوپلینگ محکم را که در کاربردهای بزرگ مهم است، کاهش دهید
--کدنویسی مبارک--