سالید (طراحی شیءگرا)
سالید (تک وظیفهای، باز ـ بسته، جایگزینی لیسکُوْ، تجزیهٔ رابط، وارونگیِ وابستگی) یک سرواژه یادیار است که توسط مایکل فیدر برای اشاره به «پنج اصل اول» رابرت سی مارتین در اوایل دههٔ ۲۰۰۰، معرفی شد. این یادیار مخفف پنج اصل اساسی برنامهنویسی و طراحی شیءگرا میباشد. وقتی این اصول با هم در طراحی و پیادهسازی یک برنامه اعمال میشوند، به احتمال قریب به یقین آن سیستم قابلیت این را خواهد داشت که به آسانی قابل توسعهپذیری و نگهداری باشد. در حقیقت اصول سالید، دستورالعملهایی هستند که میتوان هنگام کار بر روی یک نرمافزار، آنها را برای از بین بردن، عوامل نامطلوب در کد، اعمال کرد. اینکار از طریق فراهم آوردن چارچوبی انجام میگیرد که با استفاده از آن برنامهنویس میتواند متن برنامه را اصلاح و بازسازی کندتا کد برنامه خوانا و توسعهپذیر شود. این اصول بخشی از راهبرد توسعهٔ نرمافزار چابک و تطبیقی میباشند.
حرف اول | مخفف | مفهوم |
---|---|---|
S | SRP | اصل یگانگی مسئولیت
یک کلاس باید تنها یک وظیفه داشته باشد (یک کلاس باید تنها یک دلیل برای تغییر داشته باشد و نه بیشتر) |
O | OCP | اصل باز ـ بسته
اجزای نرمافزار باید نسبت به توسعه باز (یعنی پذیرای توسعه باشد) و نسبت به اصلاح بسته باشند (یعنی پذیرای اصلاح نباشد). (یعنی مثلاً برای افزودن یک ویژگی جدید به نرمافزار نیاز نباشد که بعضی از قسمتهای کد را بازنویسی کرد، بلکه بتوان آن ویژگی را مانند افزونه به راحتی به نرمافزار افزود) |
L | LSP | اصل جانشینی لیسکوف
اشیاءِ یک برنامه که از یک کلاس والد هستند، باید به راحتی و بدون نیاز به تغییر در برنامه، قابل جایگزینی با یکدیگر باشند. |
I | ISP | اصل تفکیک رابطها
استفاده از چند رابط که هر کدام، فقط یک وظیفه را بر عهده دارد بهتر از استفاده از یک رابط چند منظوره است. |
D | DIP | اصل وارونگی وابستگی
بهتر است که برنامه به تجرید(abstraction) وابسته باشد نه پیادهسازی |