انجمن برنامه نویسان البرز

تبلیغات

معجزه SOLID در برنامه نویسی

معجزه SOLID در برنامه نویسی


در مقاله قبلی، قول دادم که شما را با اصول ۵ گانه SOLID آشنا کنم. در این مقاله در رابطه با SOLID توضیحاتی میدهم. اما قبل از هر چیز یک جمله را بدانید.

SOLID معجزه میکند!

مشکل از کجا شروع میشود؟

معمولا وقتی شروع به نوشتن یک برنامه میکنیم، همه چیز خوب است. کدها تمیز هستند. کاملا میدانیم چه کار کرده ایم و خیالمان راحت است که اروری وجود ندارد. هرچقدر در پروژه جلوتر میرویم، اعتماد به نفسمان کمرنگ تر میشود. ارورها زیاد میشوند. از دستمان در میرود که چه کارهایی کرده ایم. شک میکنیم آیا همه چیز را پوشش داده ایم یا نه. در یک کلمه اینکه : “نمیتوانیم به کد خودمان اعتماد کنیم”

اینکه به کد خودمان اعتماد نداشته باشیم، باعث میشود از تحویل نهایی بترسیم یا آن را عقب بیاندازیم. تغییر دادن کد سخت میشود و هزار تا مشکل دیگر. تازه این اول داستان است. مشکل بزرگتر جای دیگری است.

وقتی کدمان را مینویسیم، چون با مساله ای که در حال حل کردنش هستیم، از نزدیک درگیریم، مشکلی با تغییرات و نوشتن قسمت های جدید نداریم. اما امان از وقتی که ۲-۳ ماه بگذرد و بخواهیم تغییری در کد بدهیم و یا باگی را فیکس کنیم. پوستمان کنده میشود!

من خیلی وقت ها به این موضوع فکر کرده ام که اگر تغییرات تا این حد سخت است و پوست آدم را میکند، شرکت های بزرگ، چطور هر سال یک نسخه جدید از نرم افزارهایشان را منتشر میکنند و به مشکل نمیخورند؟

جواب این سوال کمی طولانی است. اما مطمئنا، SOLID بخشی از جواب و راهکار این مشکلات است. اما چطور؟

SOLID چیست؟

اصول SOLID مجموعه ای از ۵ مفهوم در برنامه نویسی است که توسط Robert C. Martin (عمو باب) ارائه شد.

هر حرف از کلمه SOLID مخفف یک کلمه و در واقع یک مفهوم و تکنیک است.

S=>single responsibility

O=>open/close

L=>liskov substitution

I=>interface segregation

D=>dependency inversion

مجموعه این ۵ قاعده که بر پایه تکنیک های برنامه نویسی شی گرا هستند، به شما کمک میکنند تا کدهایی تمیزتر، بهتر و حرفه ای تر بنویسید که هم ساده تر قابل ویرایش و نگداری هستند و هم باگ های کمتری دارند.

در این مقاله، هر قاعده را در حد یک خط به شما معرفی میکنم و در مقاله های بعدی، این اصول ۵ گانه SOLID را تک به تک بررسی میکنیم.

Single Responsibility

این قاعده همانطور که از اسمش مشخص است، در رابطه با مسئولیت های کلاس ها و متدها صحبت میکند و میگوید که هر کلاس باید فقط و فقط یک مسئولیت بر عهده داشته باشد.

Open Close

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

Liskov Substitution

هر کلاس فرزند، باید با کلاس والدش، قابل تعویض باشد! توضیحات بیشتر را بگذارید برای بعد.

Interface Segregation

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

Dependency Inversion

ماژول های سطح بالا، نباید به ماژول های سطح پایین وابسته باشند. هر دوی آنها باید به Abstract ها وابسته باشند. و همچنین Abstract ها نباید وابسته به جزئیات باشند بلکه جزئیات باید وابسته به Abstractها باشند.

به احتمال زیاد، چیز زیادی دستگیرتان نشد. نگران نباشید. ظرف چند مقاله بعدی، این مفاهیم را کاملا میشناسید و کد نویسیتان، به سطح جدیدی ارتقاء پیدا میکند.

اگر نگرانید که مقاله ها را از دست بدهید، ایمیلتان را در فرم زیر ثبت کنید تا به محض انتشارشان، به شما خبر بدهم.




کلمات کلیدی : برنامه نویسی حرفه ای

نظر بدهید