اصول SOLID

SOLID
SOLID


پنج اصل SOLID توسط Robert C. Martin معروف به (Uncle Bob) برای اولین بار مطرح شد.

هدف از SOLID توسعه کدهای با خوانایی بالاتر و توسعه پذیر تر و همچنین ایجاد یک استاندارد بین تمامی توسعه دهندگان است.

اصول SOLID چه مشکلاتی رو حل می‌کند ؟

بدون استفاده از اصول SOLID مشکلات زیر وجود خواهد داشت:

  • Rigidity

به خاطر وابستگی بیش از حد کلاس ها و توابع به یکدیگر انجام تغییرات به سختی امکان پذیر است.

  • Fragility

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

  • Immobility

استفاده از کلاس ها و یا متدها به خاطر وابستگی بهم دیگر یا پیچیدگی امکان پذیر نیست.

  • Viscosity

تغییرات با اضافه کردن کد های اشتباه امکان پذیر بود ولی پروژه بزرگ و بزرگتر می‌شد و امکان توسعه وجود نداشت.

  • Duplication

متد ها در جاهای مختلف تکرار می‌شدن و در صورت رفع باگ یا مشکلی نیاز بود در تمامی جاهای که متد نوشته شده بود تغییرات اعمال شود.


چرا SOLID ؟

اصول SOLID با توجه به مشکلاتی که در توسعه نرم افزار به وجود آمده شکل گرفت که بر پایه پنج اصل می‌باشد این اصول عبارت اند از :

  • Single Responsibility Principle
  • Open-Closed Principle
  • Liskov Substitution Principle
  • Interface Segregation Principle
  • Dependency Inversion Principle

Single Responsibility

هر کلاس وظیفه انجام تنها و تنها یک کار را دارد هیچ کلاسی نباید دو یا چند عملیات انجام دهد.

یا به مفهومی دیگر : یک کار انجام بده اما درست انجام بده.

Open-Closed

هر کلاس باید قابل توسعه باشد ولی تغییر نکند.

ضمانت می‌کند که کلاس ها قابل ارث بری و استفاده هستند ولی نباید از بیرون قابل تغییر باشند.

Liskov Substitution

کلاس والد باید مناسب تمامی کلاس های فرزند باشد و اگر کلاسی از کلاسی ارث بری میکند نباید رفتار کلاس والد خود را تغییر دهد.

Interface Segregation

داشتن interface های کوچیک بهتر از داشتن یک interface بزرگ است.

Dependency Inversion

کلاس ها و ماژول ها به جز لایه انتزاعی (abstraction layer) نباید به لایه پایین تر از خود وابستگی داشته باشند.


جمع بندی

قطعا استفاده از اصول و قوانین همچون SOLID موجب بهبود فرآیند توسعه و تمیز بودن کد می‌شود.

استفاده از این اصول باعث می‌شود که یک استاندار مشترک در کل پروژه بوجود بیاید و تا حدودی مشکلات کار کردن روی پروژه های که بیش از یک توسعه دهنده در حال توسعه آن هستند را کاهش دهد. ولی این به این معنی نیست که که اگر تنها توسعه دهنده‌ی پروژه هستید این اصول را رعایت نکنید.

در کل استفاده از اصول SOLID باعث نوشتن کد های با کارایی بالا (higher performance) ، امکان استفاده در جای مختلف (reusable) ، توسعه ساده تر (maintainable) ، مقیاس پذیر (scalable) و قابل تست (testable) می‌شود.