الأجزاء الفائضة (Dispensables)
< Refactoring | smells
وهي الأجزاء عديمة النفع في الشيفرة، وسيجعلُ التخلُّصُ منها الشيفرةَ نظيفةً يسيرة الفهم وأكثر فعاليّة، منها:
- التعليقات (comments)
- المشكلة: وجود الكثير من التعليقات في التوابع (methods) بهدف الشرح التفصيليّ للشيفرة.
- الحل: يكون الحل بناءً على الحالة المستعملة وهو: تقسيم التعبير الواحد إلى تعابيرَ فرعيّة (subexpressions) بالاعتماد على استخراج المتغيِّرات، أو عزل ذلك المقطع في تابعٍ (method) جديدٍ باسمٍ معبِّر، أو إعادة تسمية التابع (rename method) لاسمٍ يشرح ذاته بذاته، أو إضافة التأكيدات.
- تكرار الشيفرة (duplicates)
- المشكلة: التشابه (أو التطابق المطلق) بين مقطعين من الشيفرة في البرنامج.
- الحل: يتعلق بتكرار الشيفرة بأكثر من تابع (method) وبنفس الصنف، أو بتكرارها في صنفين مختلفين، أو بوجود عددٍ كبيرٍ من التعابير الشرطيّة التي تنفِّذ الشيفرة ذاتها أو إن كانت لجميع فروع التعبير الشرطيّ الشيفرة ذاتها.
- أصناف البيانات (data classes)
- المشكلة: وجود العديد من أصناف البيانات في الشيفرة، والتي تُستخدَم لتخزين البيانات التي تحتاج إليها الأصناف الأخرى.
- الحل: تغليف الحقول العامّة للصنف، أو تغليف المجموعات، أو مراجعة شيفرة العميل التي تستخدِم الصنف، أو التخلُّص من توابع الوصول القديمة من خلال إزالة توابع التعديل وإخفاء التوابع.
- الشيفرة الميتة (dead code)
- المشكلة: وجود العديد من المتغيِّرات أو المعاملات أو الحقول أو التوابع أو الأصناف غير المستخدمة في الشيفرة.
- الحل: حذف الشيفرات غير المُستخدَمة والملفات الزائدة، وتضمين الأصناف أو هدم الهيكليّة الهرميّة عند الحاجة للتخلُّص من صنفٍ أعلى أو صنفٍ فرعيٍّ لم يعُد البرنامج بحاجةٍ له، وإزالة المعاملات غير اللازمة.
- الأصناف الخاملة (lazy classes)
- المشكلة: وجود بعض الأصناف قليلة الاستخدام ولا أهمية لها في البرنامج، ويجدر التخلُّص منها إذ إنّ فهم وصيانة الأصناف يكلِّفان الوقت والجهد.
- الحل: تضمين الأصناف للعناصر شبه الخاملة بهدف نقلها لصنفٍ آخر، أو هدم الهيكليّة الهرميّة للأصناف الفرعيّة ذات المهام الضئيلة.
- التخطيط الشمولي المفرط (speculative generality)
- المشكلة: وجود أصنافٍ أو توابعَ أو حقولٍ أو معاملاتٍ غير مُستخدَمة في الشيفرة.
- الحل: هدم الهيكليّة الهرميّة لإزالة الأصناف المُجرَّدة غير المُستخدَمة، أو دمج الأصناف للحدُّ من عمليات تفويض المهامّ غير الضروريّة لصنفٍ آخر، أو دمج التوابع للتخلُّص من التوابع عديمة النفع، أو إزالة المعاملات الزائدة في قائمة معاملات التابع، أو حذف الحقول غير الضروريّة.