مسئولیت واحد (Single Responsibility) در مهندسی نرم افزار و برنامه نویسی

پیش نیاز این درس:

برای درک بهتر این درس بهتر است با برنامه نویسی شی گرا آشنایی داشته باشید یا حداقل یک یا چند پروژه نرم افزاری به صورت شی گرا کار کرده باشید

مدرس: مسعود کاویانی

حتما میدانید که در برنامه نویسی شی گرا در یک پروژه نرم افزاری، کلاس ها (Class) و توابع (Function) مختلف حضور دارند. این کلاس ها در فایل های مختلف قرار میگیرند و هر کدام کاربردهای خاص خود را دارند. مانند افراد مختلف در یک سازمان که هر کدام مسئولیت های مشخصی بر عهده داند.

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

اگر یک کلاس داشته باشید که چند کار را با هم انجام دهند، احتمالا در حال دور شدن از اصل مسئولیت واحد هستید. شکل زیر را در نظر بگیرید:

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

در برنامه نویسی معمولا اگر توابع شما تعدا خط زیادی داشته باشد این احتمال می رود که در حال دور شدن از Single Responsibility هستید. یکی از راه های غلبه بر این مشکل عملیات Refactoring است به گونه ای که توابع و کدها را دوباره از نو نگاهی بیندازید و آن هایی که از لحاظ منطقی میتوانند خودشان یک کلاس یا تابع باشند را جدا نمایید.

همچنین استفاده از Dependency Injection نیز میتواند تا حدوده زیادی از این مشکل جلوگیری کند.

منابع این بحث و اطلاعات بیشتر

» وب سایت CodeBurst

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

یک دیدگاه دربارهٔ «مسئولیت واحد (Single Responsibility) در مهندسی نرم افزار و برنامه نویسی»

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *