الفرق بين المراجعتين ل"Refactoring/message chains"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:سلاسل الرسائل (Message Chains)}}</noinclude> == توصيف المشكلة == وجود العديد من الاستدعاءات ال...')
 
ط
سطر 18: سطر 18:
 
== انظر أيضًا ==
 
== انظر أيضًا ==
 
* [[Refactoring/hide delegate|إخفاء التفويض (hide delegate)]]
 
* [[Refactoring/hide delegate|إخفاء التفويض (hide delegate)]]
* [[Refactoring/extract method|استخراج تابعٍ (extract method)]]
+
* [[Refactoring/extract method|استخراج التابع (extract method)]]
 
* [[refactoring/move method|نقل التابع (move method)]]
 
* [[refactoring/move method|نقل التابع (move method)]]
 
* [[Refactoring/middle man|مشكلة الوسيط (middle man)]]
 
* [[Refactoring/middle man|مشكلة الوسيط (middle man)]]

مراجعة 14:15، 30 سبتمبر 2018

توصيف المشكلة

وجود العديد من الاستدعاءات المتسلسلة في الشيفرة، مثل: ‎$a->b()->c()->d()‎.

أسبابها

تحدث المشكلة عند طلب العميل (client request) كائنًا (object) آخر والذي بدوره يطلب كائنًا آخر ثالثًا وهكذا، مما يعني اعتماد العميل على التنقّل (navigation) في بنية الأصناف (class structure)، وبالتالي فإنّ أيّ تعديلٍ في تلك العلاقات سيتطلَّبُ إجراء التعديلات أيضًا على العميل بحدِّ ذاته.

وما الحل؟

إليك المزيد

سيخفِّف حلُّ المشكلة من الاعتمادية (dependency) ما بين أصناف (classes) السلسلة الواحدة، كما وسيقلِّلُ أيضًا من حجم الشيفرة المُستخدَمة.

تجاهل المشكلة

قد يُسبِّبُ الإخفاء المفرط للتفويض (aggressive delegate hiding) الحصولَ على شيفرةٍ يصعُب فيها تحديد مكان تنفيذ العمليّات الفعليّة (functionality)، فكن يقظًا لتجنُّب الوقوع بمشكلةٍ أخرى من مشاكل الشيفرات وهي مشكلة الوسيط (middle man).

انظر أيضًا

مصادر