اصل single responsibility چرته
کلمه responsibility خودش خیلی کلمه نامفهومیه، اصلا responsibility ینی چی؟ شما وظیفه رو دقیقا چی تعریف میکنی؟ به چی میگی وظیفه؟
آقای uncle Bob در تعریف single responsibility میگه:
A class should have one and only one reason to change
ینی چی only one؟
در همین ابتدا میشه دو تا دلیل آورد که یه کلاس میتونه تغییر بکنه، یکی باگ فیکس و دومی فیچر اضافه کردن
الان تکلیف ما چیه؟ این تعریف رفت زیر سوال، ینی دیگه من single responsibility رو رعایت نکردم؟
حالا فرض کنید یه نفر یک کلاسی نوشته که دو تا متد داره، یکی کاربر رو ایجاد میکنه و یه متد دیگه داره به اون کاربر notification خوش آمد گویی ارسال میکنه.
آیا طبق معیاری به اسم single responsibility میشه گفت این کلاسی که تعریف کردم single responsibile هست؟
به نظرم من خیر نمیشه گفت
حالا معیار درست چی میتونه باشه؟
Cohesion
به نظرم معیار درست تر Cohesionهه، چرا؟
احتمالا وقتی که من کلاس بالارو براتون تعریف کردم به خودتون گفتید ارسال notification چه ربطی به ایجاد کاربر داره، دقیقا درست گفتید
معیار Cohesion بهتره چون شما میتونید ببینید متدهای که چیدید کنار هم چقدر به هم دیگه مرتبط هستند
با این معیار حالا میشه تصمیم گرفت که متد ارسال notification باید یک کلاس مستقل برای خودش بشه
@DevTwitter | <Amir Salehi/>