
برنامه نویسی شی گرا به ما قدرت خیلی زیاده داده و با استفاده از آنها کارهایی را می توانیم انجام دهیم که قبل از آن امکان را نداشتیم.
اما این شی گرایی معایبی هم برای ما دارد برای مثال در بعضی مواقع باعث بیش از حد پیچیدگی کدهای ما می شود.
در برنامه نویسی اصلی داریم که به 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
در این اصل باید وابستگی کلاس های خودمون و از بالا به پایین کم کنیم.
یعنی کلاس های پدر به کلاس های فرزند کمتر وابسته باشند. یا به طور کلی هر نوع ماژولی.
نظر دهید