🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ امیر رحمانی
منظور از تک وظیفه ای یا تغییر کلاس بخاطر یک دلیل چیه؟
جامعه پی اچ پی ایجاد شده در ۲۰ اردیبهشت ۱۴۰۰

سلام وقت بخیر من یک مشکلی با این اصل دارم و خوب درکش نکردم سرچم زیاد کردم ولی باز به اون چیزی که میخواستم نرسیدم ، منظور از اینکه کلاس فقط بخاط یک دلیل تغییر کنه چیه یا اینکه یک وظیفه داشته باشه. چون با توجه به اسم کلاس این وظایف تغییر می‌کنه مثلا در قسمت tdd یک orm نوشته شد خب با توجه به اینکه خب orm عملیات crud رو انجام میده خب میشه یک وظیفه ولی تنها بخاطر یک دلیل تغییر نمیکنه اگه اسم کلاس عوض شه عملیات‌ها ممکنه بیشتر شه مثلا یک پیام رسان اگه ما یه کلاس هسته با عنوان پیام رسان داشته باشیم خب (خب تعداد زیادی از عملیات‌های پیام رسان شامل حذف  و دیلت و نشان دادن پیام و .. )رو شامل میشه ول خب همه اینا میشه یک وظیفه ولی تنها بخاطر یک دلیل تغییر نمیکنه من متوجه نمیشم اینو الان دلیل همون عملیات هایی که داخل یک کلاس انجام میشه؟اگه امکانش هست این و واضح‌تر توضیح بدید برام ’’

سلام ,

 

 به نظرم در  clean code اصول solid تا حد ممکن باید رعایت بشه , این بدین معنی هست تا جایی که امکان داره , باید رعایت بشن.

 

مسئله اینجاست که هیچ وقت نمی‌شه چیزی رو کامل ویا بدون نقض درست کرد..  اصل SRP  میگه که هر قسمت از  یک برنامه مسولیت به خصوصی داشته باشه; تا زمانی که مشکلی در برنامه رخ داد بدونیم که از کدوم قسمت از برنامه وظیفه خودش رو انجام نداده.

و یا اگر تونستیم یک بخشی از برنامه رو توسعه بدیم که بتونه سریع‌تر و کم هزینه‌تر کار خودشو انجام بده .. فقط تمرکزمون بر اون قسمت از برنامه باشه ..  تا هم وظیفشو برای اجزای مختلف برنامه انجام بده و هم اینکه در قسمت‌های مختلف برنامه اختلال بوجود نیاره.

 

امیدوارم براتون ملموس بوده باشه.

 

فراز صالحی ۲۰ اردیبهشت ۱۴۰۰، ۱۱:۰۴

سلام و احترام

 

متدهایی که توی یه کلاس وجود دارند باید مربوط باشه به وظیفه اون کلاس، برای مثال تو همین orm همه متدها دارن کوئری میزنن و وظیفه‌ها کاملا مشخصه و یهو مثلا کسی نمیاد کاربر register کنه. پس تا الان مشخص شد که کلاس ما وظیفش همینه حالا شما بخواید بیاید متدی رو اضافه کنید میرید داخل همون کلاس و یه متدی رو اضافه میکنید

 

اما وقتی میگیم فقط یک دلیل داره که تغییر کنه ینی اینکه شما اگه بخواید یه چیزی که مربوط به وظیفه اون کلاس میشه رو تغییر بدید فقط و فقط باید یه چیزی که به اون کلاس ربط با وظیفش داره رو باید تغییر بدید و نباید در غیر این صورت این کلاس رو تغییر بدید

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

قصد اینکه پیچیدگی این کلاس بیاد پایین

 

 

 

https://www.armakuni.com/ak-thinking/2020/2/10/the-single-responsibility-principle-srp-software-engineering-topic-of-the-daynbsp2#:~:text=The%20Single%20Responsibility%20Principle%20states,has%20one%20reason%20to%20change.

امیر صالحی ۲۰ اردیبهشت ۱۴۰۰، ۱۷:۳۴