حسام رسولیان

مفاهیم SOLID که هر برنامه نویسی باید بداند

  • نوشته شده در ۲۱ بهمن ۱۳۹۷
  • توسط
  • در مقاله
اصل SOLID

برنامه نویسی شی گرا به ما قدرت خیلی زیاده داده و با استفاده از آنها کارهایی را می توانیم انجام دهیم که قبل از آن امکان را نداشتیم.

اما این شی گرایی معایبی هم برای ما دارد برای مثال در بعضی مواقع باعث بیش از حد پیچیدگی کدهای ما می شود.

در برنامه نویسی اصلی داریم که به SOLID معروف است و با رعایت این اصول میتوانیم برنامه ای تمیز تر طراحی کنیم.

SOLID مخفف عبارت زیر است:

  • S: Single Responsibility Principle
  • O: Open-Closed Principle
  • L: Liskov Substitution Principle
  • I: Interface Segregation Principle
  • D: Dependency Inversion Principle


Single Responsibility Principle

این قسمت به طور خلاصه اینو میگه که هر کلاس باید فقط یک وظیفه انجام دهند.

اگر به کلاس خودتون بیشتر از یک کار بسپارید به راحتی باعث پیچیده شدن آن می شوید.

برای مثال داخل یک کلاس نباید متدهایی بنویسیم که هم کار روی دیتابیس انجام دهند و هم مسائل مربوط به اتصال سرور و در اختیار داشته باشند.

فقط یک مسئولیت به هرکلاس میدهیم.


Open-Closed Principle

این اصل میگوید که کلاس های ما باید برای ایجاد تغییرات بسته باشند.

زیرا با هر تغییری در کلاس باید هرجایی که از این کد استفاده شده است را تغییر دهیم.

اما میتونیم از افزونه یا توسعه کلاس استفاده کنیم.

برای مثال هرچقدر که برنامه بزرگتر میشه شما در یک متد احتمالا نیاز به چک کردن وضعیت دارید و همزمان تعداد if های متدتون بیشتر میشه

Liskov Substitution Principle


فرض کنید کلاس C از کلاس B مشتق شده است، بر اساس قاعده LSP، در هر قسمت از برنامه که شئ ای از نوع B استفاده شده است، باید بتوان شئ ای از نوع C را جایگزین کرد، بدون اینکه تغییری در روند اجرای برنامه رخ دهد.

به طور خلاصه هر کلاس فرزند باید برای کلاس پدر قابل تعویض باشد.

Interface Segregation Principle

این مفهوم می گوید بخش هایی از برنامه که به بعضی از قسمت های این اینترفیس نیاز ندارند نباید به آن دسترسی داشته باشند.

برای این کار باید اینترفیس خودتون و به اینترفیس های کوچیک تر تبدیل کنید تا هر کلاس به بخشی که به آن نیاز دارد دسترسی داشته باشد.

Dependency Inversion Principle

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

یعنی کلاس های پدر به کلاس های فرزند کمتر وابسته باشند. یا به طور کلی هر نوع ماژولی.

نظر دهید

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