التغيير المتشعِّب (Divergent Change)
ملاحظة قبل البدء
إنّ مشكلة التغيير المتشعِّب هي المشكلة المعاكسة تمامًا لمشكلة تغيير الأصناف المتعدِّدة (Shotgun Surgery)، إذ إنّ التغيير المتشعِّب هو مجموع التغييرات الكثيرة التي تُجرَى في صنفٍ (class) واحدٍ، أما تغيير الأصناف المتعدِّدة فهو تغييرٌ واحدٌ يُجرَى في العديد من الأصناف.
توصيف المشكلة
الحاجة لتغيير الكثير من التوابع التي لا علاقة لها بالأمر بمجرَّد إحداث أيّ تغيير في الصنف (class)، فمثلًا؛ لدى إضافة منتجٍ جديدٍ عليك تعديل التوابع المسؤولة عن البحث عن المنتجات وعرضها وتنظيمها، وهذا مستهلكٌ للوقت والجهد.
أسبابها
تُعزى المشكلة عمومًا للبُنية (structure) البرمجيّة الضعيفة (أو ما يُعرف بمصطلح copypasta programming).
وما الحل؟
- عزل سلوك (behaviour) الصنف عبر إنشاء صنفٍ جديدٍ (extract class).
- بوجود أصناف مختلفةٍ تتماثل بنفس السلوك يكمُن الحلُّ بدمج الأصناف عبر الوراثة (inheritance) وذلك باستخراج الصنف الأعلى (superclass) أو استخراج الصنف الفرعيّ (subclass).
إليك المزيد
ستحصل بعلاجك المشكلة على:
- تنظيمٍ أفضل للشيفرة.
- تقليل الشيفرات المُتكرِّرة (duplications).
- تبسيط الدعم.
انظر أيضًا
- استخراج الأصناف (extract class)
- استخراج الصنف الأعلى (extract superclass)
- استخراج الصنف الفرعيّ (extract subclass)