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

تبلیغات

Single Responsibility از اصول SOLID


در مقاله قبلی شما را با SOLID آشنا کردیم و با هم دیدیم که SOLID اولین پله به سمت برنامه نویس حرفه ای شدن است. در این مقاله، اولین، مهمترین و شاید سخت ترین اصل SOLID را بررسی میکنیم. اصل Single Responsibility یا همان SRP.

Single Responsibility (به فارسی یعنی تک مسئولیتی بودن) اولین اصل از اصول ۵ گانه SOLID است. این اصل، همانطوری که از اسمش مشخص است، درباره این موضوع صحبت میکند که یک کلاس، باید فقط یک مسئولیت داشته باشد. به همین سادگی!

البته موضوع، آنقدرها هم ساده نیست. اکثر برنامه نویس ها فکر میکنند که Single Responsibility را رعایت میکنند. در حالی که آمارها نشان داده که بیشترین اصلی که به اشتباه پیاده سازی میشود، همین Single Responsibility است.

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

پس در یک ماشین، تکلیفمان مشخص است. استارت زدن، وظیفه کمک فنر نیست. حالا فرض کنید ماشینی وجود داشته باشد که استارت زدنش توسط کمک فنر انجام بشود!!! در این صورت، هر وقت که استارت خراب شد، باید کمک فنر را هم تست کنید. بنابراین کمک فنر ۲ دلیل برای تعمیر شدن دارد. یکی وقتی ماشین استارت نمیخورد! دوم وقتی که توی دست اندازها، ماشین روان نیست!

مشخص شد نه؟ وقتی به یک قسمت، فقط یک مسئولیت بدهید، تکلیفتان مشخص تر است. در این صورت، هر وقت که مشکلی پیش آمد، درست سراغ همان قسمت میروید و نیازی ندارید که بقیه قسمت ها را تست کنید.

حالا بیایید یک بار دیگر به مقاله معجزه SOLID در برنامه نویسی برگردیم. در آن مقاله گفته بودم که :

مشکل، وقتی به وجود می آید که بخواهیم کدهایمان را ویرایش کنیم و ندانیم قبلا چه کار کرده ایم

با رعایت Single Responsibility این مشکل تا حد زیادی کم میشود. چون دیگر نیاز ندارید تمام کدهایتان را به یاد بیاورید. یک نکته مهم این است که SOLID باید هم در سطح کلاس رعایت شود و هم در سطح متدها. یعنی هر متد، باید فقط یک کار بکند. پس تا میتوانید، متدها را بشکنید و SRP کنید.

برویم سراغ یک مثال برنامه نویسی:

فرض کنید کلاسی دارید که حقوق یک کارمند را محاسبه، و فیش حقوقی او را چاپ میکند. این کلاس، غلط است! چرا؟ چون ۲ کار انجام میدهد. اول: حقوق را محاسبه میکند. دوم: فیش چاپ میکند.

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

دو سوال مهم

اولین سوالی که ممکن است برایتان پیش بیاید، این است که : “اینطوری که تعداد کلاسام خیلی زیاد میشه! ”

بله. اما ایرادی ندارد. ۱۰۰ تا کلاس با یک متد، خیلی بهتر از ۱ کلاس با ۱۰۰ تا متد است.

سوال دوم : ” اینهمه کلاس را مدیریت کردن، گیج کننده نیست؟ ”

اینکه چطور با ۱۰۰ تا کلاس به راحتی کار کنیم و گیج نشویم، موضوع درس های بعدی اصول SOLID است.

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




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

نظر بدهید

یک دیدگاه برای “Single Responsibility از اصول SOLID

  • مجتبی طغیانی گفته
    ۲۷ بهمن ۹۷

    خداقوت
    مثل همیشه عالی