الفرق بين المراجعتين ل"Refactoring/speculative generality"
اذهب إلى التنقل
اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:التخطيط الشمولي المفرط (Speculative Generality)}}</noinclude> == توصيف المشكلة == وجود أصنافٍ (classe...') |
جميل-بيلوني (نقاش | مساهمات) ط (إنشاء الصفحة.) |
||
سطر 29: | سطر 29: | ||
== مصادر == | == مصادر == | ||
* [https://refactoring.guru/smells/speculative-generality صفحة توثيق التخطيط الشمولي المفرط في موقع refactoring.guru.] | * [https://refactoring.guru/smells/speculative-generality صفحة توثيق التخطيط الشمولي المفرط في موقع refactoring.guru.] | ||
+ | [[تصنيف:Refactoring]] | ||
+ | [[تصنيف:Refactoring Smells]] | ||
+ | [[تصنيف:Refactoring Dispensables]] |
المراجعة الحالية بتاريخ 14:57، 26 فبراير 2019
توصيف المشكلة
وجود أصنافٍ (classes) أو توابعَ (methods) أو حقولٍ (fields) أو معاملاتٍ (parameters) غير مُستخدَمة في الشيفرة.
أسبابها
إنشاء عناصرَ إضافيّةٍ "قد" يحتاجها المبرمج مستقبلًا لميّزات يُخطِّط لها (وقد لا تُنفَّذ أصلًا)، وغير مستخدمةٍ بالوقت الحاليّ، مما يجعل الشيفرة أكثر صعوبةً بالفهم والدعم.
وما الحل؟
- هدم الهيكليّة الهرميّة (collapse hierarchy) لإزالة الأصناف المُجرَّدة (abstract classes) غير المُستخدَمة.
- دمج الأصناف (inline classes) للحدُّ من عمليات تفويض المهامّ (delegation) غير الضروريّة لصنفٍ آخر.
- دمج التوابع (inline methods) للتخلُّص من التوابع عديمة النفع.
- إزالة المعاملات (remove parameters) الزائدة في قائمة معاملات التابع.
- حذف الحقول (fields) غير الضروريّة.
إليك المزيد
ستحصل بحلِّ المشكلة على شيفرةٍ أقصرَ ودعمٍ (support) أسهل.
تجاهل المشكلة
يمكن تجاهل المشكلة بإحدى الحالتين:
- عند العمل بأكثرَ من إطار عملٍ (framework) واحدٍ حيث يكون من المنطقيّ -بلا شكٍّ- إنشاءُ مهامٍ غير مستخدَمةٍ في إطار العمل الحاليّ طالما أنّ هناك إطار عملٍ آخر بحاجةٍ لها.
- ارتباط أيّ عنصرٍ تنوي حذفه باختبارات الوحدات (unit tests)، إذ ستحدث مشكلةٌ (إن حُذِفت بعض العناصر) عند حاجة الاختبار لطريقةٍ ما للحصول على المعلومات الداخليّة من الصنف (class) أو أداءِ عمليّات خاصّة (special) أثناء إجراء الاختبار.
انظر أيضًا
- هدم الهيكليّة الهرميّة (collapse hierarchy)
- دمج الأصناف (inline classes)
- دمج التوابع (inline methods)
- إزالة المعاملات (remove parameters)