الفرق بين المراجعتين لصفحة: «Refactoring/divergent change»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:التغيير المتشعِّب (Divergent Change)}}</noinclude> == ملاحظة قبل البدء == إنّ مشكلة التغيير الم...' |
جميل-بيلوني (نقاش | مساهمات) ط مراجعة وتدقيق. |
||
سطر 29: | سطر 29: | ||
* [https://refactoring.guru/smells/divergent-change صفحة توثيق التغيير المُتشعِّب في موقع refactoring.guru .] | * [https://refactoring.guru/smells/divergent-change صفحة توثيق التغيير المُتشعِّب في موقع refactoring.guru .] | ||
[[تصنيف:Refactoring]] | [[تصنيف:Refactoring]] | ||
[[تصنيف:Refactoring Smells]] | [[تصنيف:Refactoring Smells]] | ||
[[تصنيف:Refactoring Change Preventers]] |
المراجعة الحالية بتاريخ 14:05، 26 فبراير 2019
ملاحظة قبل البدء
إنّ مشكلة التغيير المتشعِّب هي المشكلة المعاكسة تمامًا لمشكلة تغيير الأصناف المتعدِّدة (Shotgun Surgery)، إذ إنّ التغيير المتشعِّب هو مجموع التغييرات الكثيرة التي تُجرَى في صنفٍ (class) واحدٍ، أما تغيير الأصناف المتعدِّدة فهو تغييرٌ واحدٌ يُجرَى في العديد من الأصناف.
توصيف المشكلة
الحاجة لتغيير الكثير من التوابع التي لا علاقة لها بالأمر بمجرَّد إحداث أيّ تغيير في الصنف (class)، فمثلًا؛ لدى إضافة منتجٍ جديدٍ عليك تعديل التوابع المسؤولة عن البحث عن المنتجات وعرضها وتنظيمها، وهذا مستهلكٌ للوقت والجهد.
أسبابها
تُعزى المشكلة عمومًا للبُنية (structure) البرمجيّة الضعيفة (أو ما يُعرف بمصطلح copypasta programming).
وما الحل؟
- عزل سلوك (behaviour) الصنف عبر إنشاء صنفٍ جديدٍ (extract class).
- بوجود أصناف مختلفةٍ تتماثل بنفس السلوك يكمُن الحلُّ بدمج الأصناف عبر الوراثة (inheritance) وذلك باستخراج الصنف الأعلى (superclass) أو استخراج الصنف الفرعيّ (subclass).
إليك المزيد
ستحصل بعلاجك المشكلة على:
- تنظيمٍ أفضل للشيفرة.
- تقليل الشيفرات المُتكرِّرة (duplications).
- تبسيط الدعم.
انظر أيضًا
- استخراج الأصناف (extract class)
- استخراج الصنف الأعلى (extract superclass)
- استخراج الصنف الفرعيّ (extract subclass)