Refactoring/smells/bloaters

من موسوعة حسوب
مراجعة 12:48، 26 فبراير 2019 بواسطة جميل-بيلوني (نقاش | مساهمات) (نقل جميل-بيلوني صفحة Refactoring/bloaters إلى Refactoring/smells/bloaters: تصحيح العنوان)

قد يزداد حجم الشيفرات والتوابع (methods) والأصناف (classes) ازديادًا كبيرًا ليصل لمرحلةٍ يصعُب التعامل معها، ولا يحدث هذا بشكلٍ فجائيِّ دفعةً واحدةً، بل يكون ناتجًا عن تراكم الإضافات أثناء تطوير البرنامج (وخاصةً عندما لا يبذل أحدٌ جهدًا للحدِّ من ذلك التشعب)، ويبدو هذا التضخم واضحًا.

  1. التوابع الطويلة (long methods)
  2. الأصناف الواسعة (large classes)
  3. هوس الحقول الأساسيّة (primitives obsession)
  4. المعاملات الكثيرة في التوابع (long parameter list)
    • المشكلة: وجود ما يزيد عن ثلاثة أو أربعة معاملات (parameters) مُمرَّرة للتابع (method).
    • الحل: يتفاوت الحل تبعًا للحالة؛ فيمكن أن يكون الحل هو تبديل المعاملات التي تنتج قيمتها عن استدعاء تابع إلى هذا التابع نفسه، أو تمرير الكائن ككل بدلًا من تمرير البيانات المرتبطة به بشكل متفرق، أو إنشاء كائن معاملات وتمريرها سويةً.
  5. البيانات المُجمَّعة (data clumps)
    • المشكلة: تكرار مجموعةٍ من المتغيِّرات (variables) بشكلٍ متطابقٍ تمامًا في عدّة أجزاء من الشيفرة، إذ يجب تحويل تلك المجموعات إلى أصنافها (classes) الخاصّة بها.
    • الحل: يعتمد الحل على حالة الاستخدام؛ فيمكن أن يكون الحل هو إنشاء صنف ونقل الحقول إليه، أو إنشاء كائن معاملات لفصلها في صنف مستقل، أو تمرير كائن يمثِّل البيانات المراد تمريرها كحقول متفرقة، أو قد يكون الحل ببساطة هو نقل مجموعة الحقول المكررة إلى صنف للبيانات.

مصادر